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)