単純なPython正規表現を使用して、サッカー(サッカー)のWebページからいくつかの情報を取得したいと思います。問題は、最初のチャップ、ÄÄRITALOなどのプレイヤーがÄÄ RITALO!として出てくることです。
つまり、htmlは、Äなどの特殊文字にエスケープされたマークアップを使用します。
HTMLを正しいPython文字列に読み込む簡単な方法はありますか?XML / XHTMLの場合、それは簡単ですが、パーサーがそれを行います。
HTMLスクレイピングにはBeautifulSoupをお勧めします。また、次のように、HTMLエンティティを対応するUnicode文字に変換するように指示する必要があります。
>>> from BeautifulSoup import BeautifulSoup
>>> html = "<html>ÄÄ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進数では機能しません)。
BeautifulSoupを使ってみてください。それはトリックを実行し、同様に動作するように適切にフォーマットされたDOMを提供するはずです。
このブログエントリは、ある程度の成功を収めているようです。
自分で試したことはありませんが、試したことはありますか
http://zesty.ca/python/scrape.html?
それはあなたが望むことをするであろうメソッドhtmldecode(text)を持っているようです。