我是网络爬虫的新手,但是遇到了在下拉列表中获取所选值的问题。我目前正在使用beautifulsoup尝试解决我的问题。
来源就像:
<TDalign="right">投资方式:
</TD>
<TD>
<SELECT name="financingType">
<OPTION selected="selected"value="48">增资扩股</OPTION>
<OPTION value="211">股权受让</OPTION>
<OPTION value="212">增资+受让</OPTION>
<OPTION value="771">CB</OPTION>
<OPTION value="772">担保</OPTION>
</SELECT>
在这种情况下,我想获得带有值标签“ 48”(所选选项)的文本,即“增资扩股”。
老实说,我对此一无所知。我试过了:
financingType = soup.find('select',{'name': 'financingType'}).get('value')
但是它给出一个NONE
值。
我想问一下我可以通过什么方法获得此下拉列表的选定值?
问题是我具有这些“下拉”类型的许多属性,例如,在这种情况下,我具有。我想问一下如何找到“ financingType”的特定属性?
非常感谢您。
答案 0 :(得分:2)
使用css选择器可以更快地获取值。
from bs4 import BeautifulSoup
data='''<TDalign="right">投资方式:
</TD>
<TD>
<SELECT name="financingType">
<OPTION selected="selected" value="48">增资扩股</OPTION>
<OPTION value="211">股权受让</OPTION>
<OPTION value="212">增资+受让</OPTION>
<OPTION value="771">CB</OPTION>
<OPTION value="772">担保</OPTION>
</SELECT>'''
soup=BeautifulSoup(data,'lxml')
print(soup.select_one('option[selected="selected"]')['value'])
print(soup.select_one('option[selected="selected"]').text)
48
增资扩股
已编辑
print(soup.select_one('select[name="financingType"]').select_one('option[selected="selected"]').text)
答案 1 :(得分:1)
您可以使用option
找到选定的soup.find
标签,并指定selected
属性的值:
from bs4 import BeautifulSoup as soup
result = soup(html, 'html.parser').find('select', {'name':'financingType'}).find('option', {'selected':'selected'})['value']
输出:
'48'
答案 2 :(得分:0)
您可以使用mechanicalsoup
轻松地做到这一点
解决方案看起来像这样
import mechanicalsoup
bro = mechanicalsoup.StatefulBrowser()
bro.open(url)
bro.select_form(f'form[action={action_name}]')
bro["financingType"] = "48"
您将需要在html中找到表单操作并将其设置为变量action_name