2013-10-15 45 views
4
<select> 
    <option value="0">2002/12</option> 
    <option value="1">2003/12</option> 
    <option value="2">2004/12</option> 
    <option value="3">2005/12</option> 
    <option value="4">2006/12</option> 
    <option value="5" selected>2007/12</option> 
</select> 

與此代碼,我需要價值'0'作爲'2002/12'蟒蛇BeautifulSoup得到select.value不是文本

我嘗試了很多的BS4選擇,.stripped_strings.strip().contentsget()

不是文字

如何獲取值不是文本?

+0

是我的回答沒有幫助?你接受然後再次接受,你需要添加什麼? –

+0

@MartijnPieters不,它超級好。只是爲了錯誤。 :) – joseph

回答

11

你想要value屬性;使用訪問tag attributes映射語法:

option['value'] 

演示:

>>> from bs4 import BeautifulSoup 
>>> soup = BeautifulSoup('''\ 
... <select> 
... <option value="0">2002/12</option> 
... <option value="1">2003/12</option> 
... <option value="2">2004/12</option> 
... <option value="3">2005/12</option> 
... <option value="4">2006/12</option> 
... <option value="5" selected>2007/12</option> 
... </select> 
... ''') 
>>> for option in soup.find_all('option'): 
...  print 'value: {}, text: {}'.format(option['value'], option.text) 
... 
value: 0, text: 2002/12 
value: 1, text: 2003/12 
value: 2, text: 2004/12 
value: 3, text: 2005/12 
value: 4, text: 2006/12 
value: 5, text: 2007/12 
+0

謝謝。它完美地工作。 – joseph

1

像這樣:

>>> import BeautifulSoup 
>>> doc = """ 
... <select> 
... <option value="0">2002/12</option> 
... <option value="1">2003/12</option> 
... <option value="2">2004/12</option> 
... <option value="3">2005/12</option> 
... <option value="4">2006/12</option> 
... <option value="5" selected>2007/12</option> 
... </select> 
... """ 
>>> soup = BeautifulSoup.BeautifulSoup(doc) 
>>> list = soup.findAll('option') 
>>> for l in list: 
... print l['value'] 
... 
0 
1 
2 
3 
4 
5 
>>>