Я использую Python with Scrapy (Python 3.7.1 & Scrapy 1.6.0) для очистки веб-страниц на арабском веб-сайте при использовании кодировки utf-16 и экспортирую выходные данные в файл .csv, объединяя все столбцы и отображая их только водин столбец в следующем виде: Company_Name, Phone, Activity, Website, Company_Type, а также все результаты, показанные под ним.Но при использовании любой другой кодировки результаты показали нормальное каждое поле в одном столбце, но в странном формате.
# spider.py
# -*- coding: utf-8 -*-
import scrapy
from scrapy import Request
from scrapy.loader import ItemLoader
from Arabic_Companies.items import ArabicCompaniesItem
class ArabicSpider(scrapy.Spider):
name = 'arabic'
handle_httpstatus_all = True
def start_requests(self):
url = "https://www.egycompanies.com/searchAr?name=&activity=&industry_id=0"
yield Request(url, callback=self.parse)
def parse(self, response):
links = response.xpath("//div[@class='f-listings-item']")
for link in links:
Company_Name = link.xpath(".//div/div/div/h2[@class='f-listings-item__title']/a/text()").extract_first()
Phone = link.xpath(".//*[contains(text(),' هاتف الشركة: ')]/following-sibling::text()[1]").extract_first()
Activity = link.xpath(".//*[contains(text(),' النشاط: ')]/following-sibling::text()[1]").extract_first()
Website = link.xpath(".//*[contains(text(),' الموقع الإلكترونى: ')]/following-sibling::a[1]/@href").extract_first()
Company_Type = link.xpath(".//*[contains(text(),' التصنيفات : ')]/span/text()").extract_first()
loader = ItemLoader(item=ArabicCompaniesItem(), response=response)
loader.add_value('Company_Name', Company_Name)
loader.add_value('Phone', Phone)
loader.add_value('Activity', Activity)
loader.add_value('Website', Website)
yield loader.load_item()
------------------------------------------------
# items.py
import scrapy
from w3lib.html import replace_escape_chars
from scrapy.loader.processors import MapCompose, TakeFirst
class ArabicCompaniesItem(scrapy.Item):
Company_Name = scrapy.Field(input_processor= MapCompose(replace_escape_chars))
Phone = scrapy.Field(input_processor= MapCompose(replace_escape_chars))
Activity = scrapy.Field(input_processor= MapCompose(replace_escape_chars))
Website = scrapy.Field(input_processor= MapCompose(replace_escape_chars))
Company_Type = scrapy.Field(input_processor= MapCompose(replace_escape_chars))
------------------------------------------------
# settings.py file
FEED_EXPORT_ENCODING = 'utf-16'
FEED_EXPORT_FIELDS = ["Company_Name", "Phone", "Activity", "Website", "Company_Type"]
Company_Name, Phone, Activity, Website, Company_Type
أورينتال لمكسبات الطعم والرائحة,0482590882, صناعات غذائية, http://www.oriental -off.com , شركات المواد الغذائية