[英]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.