在python中使用scrapy 1.5.1编码HTML错误

时间:2018-08-24 19:29:00

标签: python parsing encoding utf-8 scrapy

因此,我正在从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'])

我尝试了两件事:

首先没有显式编码(草皮文档说默认情况下使用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&oacute;n ahora es gratuita. Agradecemos su donaci&oacute;n para continuar con nuestro proyecto, Gracias.</span></td> 显然不是。

如果我显式使用lxml包,则解析完成,没有任何问题。

谢谢你, 对不起,我的英语。

1 个答案:

答案 0 :(得分:0)

尝试codecsutf-8写入文件

import codecs

file = codecs.open("lol", "w", "utf-8")
file.write(u'\ufeff')
file.close()