我正在使用Python2.6,并且在请求模块和字符编码方面存在大量问题。
煮成最简单的形式,这是我的代码和产生的错误(包括导致我的问题的实际网站):
import requests
sites = ['www.ddelectricmotors.com', 'www.stearnswood.com']
for domain in site:
r = requests.get( 'http://' + domain )
f = open( domain, 'w' )
f.write( r.text )
f.close()
DDElectric Motors的页面加载并保存正常,但Stearnswood尝试产生以下错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 13186: ordinal not in range(128)
理想情况下,我更愿意强制编码为ascii,因为我将它加载到scikit-learn中,这似乎更像是ascii。我只要删除未知的字符就可以了。
答案 0 :(得分:2)
Unix文件包含字节,而r
对象的text
属性似乎是一个代码点字符串,所以如果你在Unix上,你可以改为f.write(r.text.encode('UTF-8'))
。
更大的问题是通过互联网将未经过保护的数据写入自动化流程中的文件中。如何使用该文件要非常小心。如果您信任该网站,请至少考虑使用HTTPS。