7

単純なPython正規表現を使用して、サッカー(サッカー)のWebページからいくつかの情報を取得したいと思います。問題は、最初のチャップ、ÄÄRITALOなどのプレイヤーがÄÄ RITALO!として出てくることです。
つまり、htmlは、Äなどの特殊文字にエスケープされたマークアップを使用します。

HTMLを正しいPython文字列に読み込む簡単な方法はありますか?XML / XHTMLの場合、それは簡単ですが、パーサーがそれを行います。

4

3 に答える 3

7

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の作成者)は 、彼のWebサイトでHTMLエンティティの区切りを解除する機能を備えています。これは、10進数、16進数、および名前付きエンティティで機能します(BeautifulSoupは16進数では機能しません)。

于 2008-09-10T00:50:19.747 に答える
2

BeautifulSoupを使ってみてください。それはトリックを実行し、同様に動作するように適切にフォーマットされたDOMを提供するはずです。

このブログエントリは、ある程度の成功を収めているようです。

于 2008-09-10T00:48:19.893 に答える
0

自分で試したことはありませんが、試したことはありますか

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

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

于 2008-09-10T00:32:23.987 に答える