3

私がやろうとしていること: データベースからURIのリストを取得してダウンロードし、ストップワードを削除して、その単語がWebページに表示される頻度を数え、mongodbに保存しようとしています。

問題: 結果をデータベースに保存しようとすると、エラーbson.errors.invalidDocumentが発生します:ドキュメントは有効なutf-8である必要があります

ウェブページを処理しているときに、コード'\ xc3someotherstrangewords'、'\ xe2something'に関連しているようですが、句読点を削除しようとしていますが、間違った単語が表示されるため、アクセントを削除できません。

私がすでに試し たこと私は試したウェブページからのヘッダーを通してcharエンコードを識別しようとしましたchardetを利用してみました

re.compile(r "[^ a-zA-Z]")および/またはunicode(variable、'ascii'、'ignore');を利用します。
英語以外の言語ではアクセントが削除されるため、これは適切ではありません。

私が知りたい
のは 、文字を識別して正しい単語/エンコードに変換する方法を知っている人はいますか?
たとえば、これをWebページ'\ xe2'から取得し、'â'に翻訳します。

(英語は私の母国語ではないので許してください)編集:誰かがソースコードを見たい場合

4

1 に答える 1

3

ヘッダーの情報が間違っている可能性があるため、Webサイトの正しい文字エンコードを見つけるのは簡単ではありません。BeautifulSoupは、文字エンコードを推測するのに非常に優れており、自動的にUnicodeにデコードします。

from bs4 import BeautifulSoup
import urllib

url = 'http://www.google.de'
fh = urllib.urlopen(url)
html = fh.read()
soup = BeautifulSoup(html)

# text is a Unicode string 
text = soup.body.get_text()
# encoded_text is a utf-8 string that you can store in mongo
encoded_text = text.encode('utf-8')

この質問への回答も参照してください

于 2013-02-25T19:02:59.347 に答える