我想使用簡單的python regexp從足球(足球)網頁上刮掉一些信息。問題在於像第一個球員ÄRITALO這樣的球員出現在Ä Ä RITALO!
也就是說,html使用特殊字符的轉義標記,如Ä從網頁獲取國際字符?
是否有一種簡單的方法將html讀入正確的python字符串?如果它是XML/XHTML,那很容易,解析器會這樣做。
我想使用簡單的python regexp從足球(足球)網頁上刮掉一些信息。問題在於像第一個球員Ä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!
如果標準codecs模塊包括該編解碼器,這樣你可以做(這將是很好"some_string".decode('html_entities')
但遺憾的是事實並非如此)
編輯: 另一種解決方案: Python開發弗雷德裏克Lundh開發(ElementTree的作者,除其他事項外)在他的網站上,十進制,十六進制和命名實體工程a function to unsecape HTML entities(BeautifulSoup會不適用於十六進制)。
嘗試使用BeautifulSoup。它應該做的伎倆,並給你一個很好格式化的DOM以及使用。
This blog入口似乎已經取得了一些成功。