python BeautifulSoup get select.value not text

左心房为你撑大大i 提交于 2019-12-21 11:56:12

问题


<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>

with this code, I need value as '0' not text as '2002/12'

I tried a lot of BS4 options, .stripped_strings, .strip(), .contents, get(), etc.

How I can get values not text?


回答1:


You want the value attribute; access tag attributes using mapping syntax:

option['value']

Demo:

>>> 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



回答2:


Like this:

>>> 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
>>> 


来源:https://stackoverflow.com/questions/19392466/python-beautifulsoup-get-select-value-not-text

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!