簡體   English   中英

如何使用beautifulsoup在下拉列表中獲取所選值?

[英]How can I get the selected value in a drop-down list using beautifulsoup?

我是網絡抓取的新學習者,我遇到了在下拉列表中獲取所選值的問題。 我目前正在使用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”的這個特定屬性?

非常感謝你。

使用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
增資擴股

EDITED

print(soup.select_one('select[name="financingType"]').select_one('option[selected="selected"]').text)

您可以使用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'

使用mechanicalsoup可以很容易地做到這一點。解決方案看起來就像這樣

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

您需要在html中找到表單操作並將其設置為變量action_name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM