2008-09-10 12 views
6

シンプルなpython regexpを使って、サッカー(サッカー)のWebページから情報を削りたいです。問題は、最初のチャップ、「RITALO」などのプレイヤーは&#196と出てくることです。 Ä RITALO!
つまり、htmlは特殊文字にエスケープされたマークアップを使用します(&#196など)。ウェブページから国際文字を取得していますか?

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

答えて

7

HTMLスクレイピング用にBeautifulSoupをお勧めします。残念ながら、あなたが"some_string".decode('html_entities')を行うことができることなど、標準codecsモジュールは、このためのコーデックが含まれている場合(それはいいだろう

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

しかし:あなたもそうのように、対応するUnicode文字にHTMLエンティティを変換することを指示する必要がありますそれは)

EDITしません:! 別の解決策:他のものの間 Pythonの開発者のFredrik Lundhに(のElementTreeの著者は、)、小数点、六角と名前付きエンティティで動作する彼のウェブサイト、上のa function to unsecape HTML entities(BeautifulSoup意志を持っていますヘックスでは動作しません)。

0

私はそれを自分で試していませんが、あなたは

http://zesty.ca/python/scrape.htmlを試してみましたか?

htmldecode(text)というメソッドがあると思われます。

2

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

This blogエントリはそれでいくらか成功したようです。

関連する問題