Итак, я собираю данные с веб-страниц в Python 3.6. После получения ответа в кодировке возникает ошибка при попытке вывести данные в файл.
class ExampleSpider(scrapy.Spider):
name = 'example'
def start_requests(self):
urls = [
'http://www.bdfa.com.ar/plantel-Boca-Juniors-6.html',
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse, encoding='utf-8')
def parse(self, response):
page = response.url.split("-")
# lista = response.xpath('//*[@id="navPlalist"]/li/table/tr/td/img') # will use in the future.
filename = 'Superliga-Plantel-%s-%s.html' % (page[-3], page[-2])
with open(filename, 'wb') as f:
f.write((response.body))
execute(['scrapy', 'crawl', 'example'])
Я попробовал 2 вещи:
Сначала без явного кодирования (документация Scrapy говорит, что он использует UTF-8 по умолчанию), затем конкретно я установил кодировку на UTF-8, и только некоторые части правильно закодированы, а другие нет.
Например <title>Plantel de Club Atlético Boca Juniors|Equipo Actual|Lista de Jugadores</title>
это хорошо закодировано
и эта другая часть <td width="50"><span class="selected" style="color:#F00;">Toda nuestra información ahora es gratuita. Agradecemos su donación para continuar con nuestro proyecto, Gracias.</span></td>
явно нет.
если я использую пакет lxml явно, синтаксический анализ выполняется без проблем.
Спасибо,
Извините за мой английский.