我想从网页上抓取一些内容,这是代码:
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'进行编码:字符映射到未定义
这种错误应该取决于不同的字符,而不是相同的字符,因此我需要一个通用的解决方案。
最佳答案
要修复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'))
关于python - 如何解决Python中的编码错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33152202/