我需要使用 BeautifulSoup 从页面中获取所有文本。在 BeautifulSoup 的文档中,它表明您可以这样soup.get_text()
做。当我尝试在 reddit.com 上执行此操作时,出现此错误:
UnicodeEncodeError in soup.py:16
'cp932' codec can't encode character u'\xa0' in position 2262: illegal multibyte sequence
在我检查的大多数网站上,我都会遇到类似的错误。
我也遇到了类似的错误soup.prettify()
,但我通过将其更改为soup.prettify('UTF-8')
. 有没有什么办法解决这一问题?提前致谢!
更新 6 月 24 日
我发现了一些似乎对其他人有用的代码,但我仍然需要使用 UTF-8 而不是默认值。代码:
texts = soup.findAll(text=True)
def visible(element):
if element.parent.name in ['style', 'script', '[document]', 'head', 'title']:
return False
elif re.match('', str(element)): return False
elif re.match('\n', str(element)): return False
return True
visible_texts = filter(visible, texts)
print visible_texts
但是,错误是不同的。进步?
UnicodeEncodeError in soup.py:29
'ascii' codec can't encode character u'\xbb' in position 1: ordinal not in range
(128)