Соскоб с выпадающего значения параметра Python BeautifulSoup - PullRequest
0 голосов
/ 24 ноября 2018

Я попытался очистить данные из Интернета с помощью раскрывающегося списка ввода с помощью BeautifulSoup

это раскрывающееся значение

<selected name="try">
<option value="G1">1</option>
<option value="G2">2</option>
</selected>

И я пытаюсь вот так

soup = BeautifulSoup(url, 'html.parser')
soup['selected'] = 'G1'
data = soup.findAll("table", {"style": "font-size:14px"})
print(data)

Этобудет получать данные с тегом <table> каждый выпадающий список

, но он будет отображаться только на главной странице <table>, как мне получить данные из каждого раскрывающегося списка?

Ответы [ 2 ]

0 голосов
/ 25 ноября 2018

Вы по-прежнему используете findAll() и find() для завершения своей работы.

from bs4 import BeautifulSoup

html = """
<table style="font-size:14px">
<selected name="try">
<option value="G1">1</option>
<option value="G2">2</option>
</selected>
</table>
"""

soup = BeautifulSoup(html,"lxml")

option = soup.find("selected",{"name":"try"}).findAll("option")
option_ = soup.find("table", {"style": "font-size:14px"}).findAll("option")
print(option)
print(option_)
#[<option value="G1">1</option>, <option value="G2">2</option>]
#[<option value="G1">1</option>, <option value="G2">2</option>]
0 голосов
/ 24 ноября 2018

Попробуйте атрибут Селектор CSS

soup.select('option[value]')

[] является селектором атрибута.Это ищет элементы тега option с атрибутом value.Если есть родительский класс / идентификатор, который можно использовать, что было бы полезно в случае, если на странице доступно больше раскрывающихся списков.

items = soup.select('option[value]')
values = [item.get('value') for item in items]
textValues = [item.text for item in items]

С атрибутом родительского name можно ограничить одним раскрывающимся списком (надеюсь,- вам нужно проверить и посмотреть, требуется ли что-то еще для достаточного ограничения).Используется с потомком комбинатора :

items = soup.select('[name=try] option[value]')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...