Проблема с полями экспорта фидов при использовании utf-16 - PullRequest
0 голосов
/ 19 июня 2019

Я использую 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 , شركات المواد الغذائية

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...