python 使い方 ウェブページから国際文字を取得するには?




uci machine learning repository 使い方 (3)

この質問には既に回答があります:

私は、単純なpython regexpを使って、サッカー(サッカー)のWebページからいくつかの情報を掻き出したいと思っています。 問題は、最初のチャップ、「RITALO」などのプレイヤーが「RITALO!」と出てくることです。
つまり、htmlは特殊文字のエスケープマークアップを使用します(例:Ä

htmlを正しいpython文字列に読み込む簡単な方法はありますか? もしそれがXML / XHTMLなら、それは簡単だろう、パーサーはそれをやるだろう。


BeautifulSoupを使ってみてください。 それはトリックを行い、うまく動作するようにうまくフォーマットされたDOMを提供する必要があります。

このブログのエントリーは、それでいくらか成功したようだ。


私は自分でそれを試していないが、試してみた

http://zesty.ca/python/scrape.html

それは、あなたが望むことをするメソッドhtmldecode(text)を持つようです。


HTMLスクレイピングにはBeautifulSoupをお勧めします。 また、HTMLエンティティを対応するUnicode文字に変換するように指示する必要があります。

>>> from BeautifulSoup import BeautifulSoup    
>>> html = "<html>&#196;&#196;RITALO!</html>"
>>> soup = BeautifulSoup(html, convertEntities=BeautifulSoup.HTML_ENTITIES)
>>> print soup.contents[0].string
ÄÄRITALO!

(標準コーデックモジュールにコーデックが含まれていて、 "some_string".decode('html_entities')を実行できるようになるといいですが、残念ながらそれはありません!)

編集:別の解決策:Pythonの開発者Fredrik Lundh(elementtreeの作者など)は 10進数、16進数、名前付きのエンティティで動作するHTMLエンティティを自分のWebサイトでunsecapeする機能を持っています (BeautifulSoupは16進数では機能しません)。





unicode