如何使用beautifulsoup在下拉列表中获取所选值?

2024-05-15 16:16:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个新的网络爬行学习者,我遇到了一个问题,获取下拉列表中选定的值。我目前正在使用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值。你知道吗

请问通过什么方法可以得到这个下拉列表的选中值?你知道吗

问题是,我有很多“dropdown”类型的属性,例如,在本例中,我有。我想问的是,我怎样才能发现“financingType”这个特定属性?你知道吗

非常感谢。你知道吗


Tags: nameright网络列表属性value学习者select
3条回答

使用mechanicalsoup可以很容易地做到这一点 解决方案应该是这样的

import mechanicalsoup
bro = mechanicalsoup.StatefulBrowser()
bro.open(url)
bro.select_form(f'form[action={action_name}]')
bro["financingType"] = "48"

您需要在html中找到表单操作并将其设置为变量action_name

您可以使用soup.find找到所选的option标记,指定selected属性的值:

from bs4 import BeautifulSoup as soup
result = soup(html, 'html.parser').find('select', {'name':'financingType'}).find('option', {'selected':'selected'})['value']

输出:

'48'

使用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)

相关问题 更多 >