2012-02-04 111 views
0

如果必須從HTML頁面源提取某些屬性的值。例如:正則表達式提取數據

如果我想獲取地址的值?

<span class="address">413 W. Street</span></span><br> 

編輯:抱歉,我理解錯誤的問題。 我試圖刪除這個問題,但沒有能夠。我在這裏發佈了新問題: https://stackoverflow.com/questions/9144544/regular-expressions-for-different-attributes

+0

你用什麼基礎語言解析HTML?我認爲這是理所當然的,因爲在代碼獲取之前,您無法重新格式化HTML。 – skyburner 2012-02-04 20:07:37

回答

1

這是很難用正則表達式來抓取原始HTML數據,因爲模式可能會改變爲不同的網站。使用可以查看DOM樹的東西更容易。

如果您使用python,則可以使用BeautifulSoup。這是文檔。它確實是你想要的。 Link

0

這是一個python代碼。

>>> import re 
>>> s = '<span class="address">413 W. Street</span><br><span class="phone">218-999-1020</span>, <span class="region">WA</span> <span class="postal-code">87112</span><br>' 
>>> re.findall(r'address">(.*?)<.*phone">(.*?)<.*region">(.*?)<.*postal-code">(.*?)<', s) 
[('413 W. Street', '218-999-1020', 'WA', '87112')] 
>>> 

BTW, don't forget to see this

+0

對不起,我明白了這個問題。我試圖刪除這個問題,但沒有能力。我在這裏發佈了新問題: http://stackoverflow.com/questions/9144544/regular-expressions-for-different-attributes – user807496 2012-02-04 21:13:21

0

你不應該使用正則表達式來解析HTML。這是很說明如下:

RegEx match open tags except XHTML self-contained tags

不過,如果你知道你想要解析HTML文本的確切結構,你可以嘗試使用正則表達式(對於C#程序編寫,所以可能會因你的代碼的語言變化):

\<span[^">]*class="([^"]+)[^>]*>([^<]*) 

然後你就可以在第一個匹配組訪問類(如地址,電話等)的名稱,並在第2的值。