#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 проблема…