Проблема с Юникодом в scrapy python

#python #unicode #scrapy

#python #юникод #scrapy

Вопрос:

В течение двух часов я искал эту тему, и я перепробовал множество решений, но в моем случае не сработал, сначала вот код

 import scrapy

class HamburgSpider(scrapy.Spider):
    name = 'hamburg'
    #allowed_domains = ['https://www.hamburg.de']
    start_urls = ['https://www.hamburg.de/branchenbuch/hamburg/10239785/n0/']
    custom_settings = {
        'FEED_EXPORT_FORMAT': 'utf-8'
    }

    def parse(self, response):
        #response=response.body.encode('utf-8')
        items = response.xpath("//div[starts-with(@class, 'item')]")
        for item in items:
            business_name = item.xpath(".//h3[@class='h3rb']/text()").get()
            address1 = item.xpath(".//div[@class='address']/p[@class='extra post']/text()[1]").get()
            address2 = item.xpath(".//div[@class='address']/p[@class='extra post']/text()[2]").get()
            phone = item.xpath(".//div[@class='address']/span[@class='extra phone']/text()").get()

            yield {
                'Business Name': business_name,
                'Address1': address1,
                'Address2': address2,
                'Phone Number': phone
            }
  

В коде я поместил эту строку

custom_settings = { ‘FEED_EXPORT_FORMAT’: ‘utf-8’ }

Предполагается, что строка касается проблемы кодирования, но при экспорте результатов в csv я обнаружил, что проблема все еще существует. Мне просто нужно показать этот пример text Poppenbütteler Bogen 29a sa, показанный на веб-сайте. Я обнаружил, что результат отличается

Комментарии:

1. Я раньше не использовал scrapy, но как насчет response.body = six.ensure_str(response.body) ?

2. Большое спасибо. Это вообще не работает, и файл output.csv пуст.

Ответ №1:

У вас неправильное имя параметра.

FEED_EXPORT_FORMAT это не один из параметров, используемых scrapy по умолчанию, вместо этого требуется FEED_EXPORT_ENCODING .

Комментарии:

1. Большое спасибо. Я пытался использовать FEED_EXPORT_ENCODING , но output.csv такой же странный .. и не такой, как ожидалось. Вы пробовали код на своей стороне?

2. Я попытался открыть файл csv с помощью notepad , и он работает хорошо. но не так, как ожидалось при открытии с помощью Excel. Как я могу правильно отобразить его в Excel?

3. Я думаю, вам придется использовать функцию импорта данных Excel и указать там правильную кодировку (utf-8). В Excel, вероятно, есть какое-то глупое значение windowsy по умолчанию.

4. AFAIK, отдельного формата «CSV UTF8» не существует, ваш файл представляет собой CSV, и он закодирован в utf8. Проблема в том, что Excel не ожидает, что он будет закодирован в utf8.

5. Я не думаю, что это необходимо, поскольку вопрос касается исключительно части python / scrapy, и это специфичная для Excel проблема…