如何解决Python中的编码错误

波焦

我想从网页上抓取一些内容,这是代码:

import requests
from bs4 import BeautifulSoup
import urllib2
url = "anUrl"
r = requests.get(url)
soup = BeautifulSoup(r.text,'lxml')
print soup.prettify()

这是错误的描述:unicodeencodeerror:'charmap'编解码器无法对位置中的字符u'\ u2013'进行编码:字符映射为未定义

这种错误应取决于不同的字符,而不是相同的字符,因此我需要一个通用的解决方案。

马克·兰森(Mark Ransom)

要修复该print命令,您可以显式编码输出。根据对待Unicode字符的方式,您有许多不同的选择。

如果您只想消除控制台不支持的任何字符,请执行以下操作:

print soup.prettify().encode(sys.stdout.encoding, 'ignore')

如果要用占位符(通常是问号)替换不支持的字符:

print soup.prettify().encode(sys.stdout.encoding, 'replace')

如果要显示任何非ASCII字符作为转义序列:

print soup.prettify().encode('raw_unicode_escape')

当您准备写入HTML输出时,应将其编码为与网页将使用的编码一致,最好是UTF-8。

f.write(soup.prettify().encode('utf-8'))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章