因此,我正在从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ón ahora es gratuita. Agradecemos su donación para continuar con nuestro proyecto, Gracias.</span></td>
显然不是。
如果我显式使用lxml包,则解析完成,没有任何问题。
谢谢你, 对不起,我的英语。
答案 0 :(得分:0)
尝试codecs
将utf-8
写入文件
import codecs
file = codecs.open("lol", "w", "utf-8")
file.write(u'\ufeff')
file.close()