Web サイトをスクレイピングしており、BeautifulSoup4を使用して解析しています。Web サイトには非常にランダムな文字セットが含まれている可能性があるため、 UnicodeDammit.detwingleを使用して、適切なデータを BeautifulSoup に確実にフィードします。それは正常に機能しました...クラッシュするまで。1 つの Web サイトがコードの破損を引き起こします。「スープ」を構築するコードは次のようになります。
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)
違反サイトはこちら
質問:適切で防弾のWeb サイト ソース デコーディングを作成する方法は?