我正在抓取网站并使用BeautifulSoup4来解析它们。由于网站可以有真正随机的字符集,我使用UnicodeDammit.detwingle来确保我向 BeautifulSoup 提供正确的数据。它工作得很好......直到它崩溃了。一个网站导致代码中断。构建“汤”的代码如下所示:
u = bs.UnicodeDammit.detwingle( html_blob ) <--- here it crashes
u = bs.UnicodeDammit( u.decode('utf-8'),
smart_quotes_to='html',
is_html = True )
u = u.unicode_markup
soup = bs.BeautifulSoup( u )
还有错误(标准 Python-Unicode 地狱二重奏)
File ".../something.py", line 92, in load_bs_from_html_blob
u = bs.UnicodeDammit.detwingle( html_blob )
File ".../beautifulsoup4-4.1.3-py2.7.egg/bs4/dammit.py", line 802, in detwingle
return b''.join(byte_chunks)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 0:
ordinal not in range(128)
违规网站是这个
问题:如何进行正确且防弹的网站源解码?