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

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/

10-12 17:39