2012-01-26 204 views
2

我從Web服務接收數據檢索響應,從數據的特定數據和回答我的HTML form.The響應數據我得到的數據是這樣的下拉列表:通過蟒蛇

<span> 

     <select name="country" id="country" class="text " style="width:170px;"> 
         <option value="">-Select country-</option> 
           <option value="Russia" >Russia</option> 
           <option value="America" >America</option> 
           <option value="Spain" >Spain</option> 
           <option value="France" >France</option> 
           <option value="X - 15" >X - 15</option> 


     </select> 
</span> 

我需要進行進一步的處理在這個數據和獲取選項值在Python列表中。如何可以選擇所有國家的名稱,並將它們收集到一個Python列表?

+0

[在Python中解析HTML]的可能的重複(http://stackoverflow.com/questions/717541/parsing-html-in-python) – DrTyrsa

+0

如果你得到一個html響應,你不需要regexps,但一個xml/html解析器。 –

+0

如果您打算使用正則表達式解析HTML,請*閱讀此:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – 2012-01-26 08:33:43

回答

3

結帳beautiful soup

在這種情況下,你可以做以下假設你已經在html VAR作爲一個字符串您的HTML塊:

>>> import BeautifulSoup as bs 
>>> 
>>> html = bs.BeautifulSoup(html) 
>>> html.findAll('option') 

爲了獲得更大的語法糖,退房soupselect

+0

謝謝mvanveen .......當我必須解析更多的HTML數據時,我將使用beautifulSoup。 – user1170793

+1

html.findAll('option')而不是a.findAll('option') – user1170793

+0

很好的接收,對不起!編輯。 – mvanveen

0
import re 

pattern = r"<option value=\"(.*)\" >" 
val=re.findall(pattern,htmlCode) 

VAL將包含所有值

根據你的榜樣HTML代碼的列表,上面的正則表達式的findall應該爲你做的工作,但如果你是做了很多豐富的HTML代碼,然後解析通常正則表達式不是一個好的選擇。但對於像你這樣的簡單情況,這是最好的選擇。

+0

真棒尼廷......謝謝 – user1170793