繁体   English   中英

从下拉选项值中抓取 Python BeautifulSoup

[英]Scraping from dropdown option value Python BeautifulSoup

我尝试使用 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>中,我如何从每个下拉列表中获取数据?

尝试使用属性CSS 选择器

soup.select('option[value]')

[]是一个属性选择器。 这将查找具有value属性的option标记元素。 如果有一个可以使用的父类/id,在页面上有更多可用下拉菜单时会很有帮助。

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]')

您仍然继续使用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>]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM