Как я могу получить выбранное значение в раскрывающемся списке с помощью Beautifulsoup? - PullRequest
1 голос
/ 26 июня 2019

Я новичок в сканировании через Интернет, и у меня возникла проблема с получением выбранного значения в раскрывающемся списке. В настоящее время я использую 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 значение.

Я хотел бы спросить, с помощью каких методов я могу получить выбранное значение из этого выпадающего списка?

Проблема в том, что у меня есть много атрибутов этого типа "выпадающий", например, в этом случае, у меня есть. И я хотел бы спросить, как я могу определить этот специфический атрибут «financeType»?

Большое спасибо.

Ответы [ 3 ]

2 голосов
/ 26 июня 2019

Используйте 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)
1 голос
/ 26 июня 2019

Вы можете найти выбранный тег 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'
0 голосов
/ 26 июня 2019

Вы можете сделать это довольно легко с mechanicalsoup Решение будет выглядеть примерно так

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

Вам нужно найти действие формы в html и установить его в переменную action_name

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...