【问题标题】:Scraping from dropdown option value Python BeautifulSoup从下拉选项值 Python BeautifulSoup 中抓取
【发布时间】:2018-11-24 14:28:15
【问题描述】:

我尝试使用 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)

每次提交下拉菜单都会获取带有&lt;table&gt;标签的数据

但它只出现在主页面&lt;table&gt;,我如何从每个下拉列表中获取数据?

【问题讨论】:

    标签: python python-3.x web-scraping beautifulsoup


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      试试attribute 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 属性限制为一个下拉列表(希望 - 您需要测试并查看是否需要进一步的东西来充分限制)。与descendant combinator一起使用:

      items = soup.select('[name=try] option[value]')
      

      【讨论】:

      • soup.select('option[G1]') 这样吗?
      • 下拉菜单是否有父 ID/类?
      • @QHarr
      • 我的意思是我可以从 G1 和 G2 获得桌子吗?根据用户输入,我已经有下拉列表
      • 以上将提取每个选项的下拉列表中的文本以及 value 属性的值。
      猜你喜欢
      • 2021-09-13
      • 2022-07-20
      • 1970-01-01
      • 1970-01-01
      • 2015-05-07
      • 1970-01-01
      • 1970-01-01
      • 2021-01-04
      • 1970-01-01
      相关资源
      最近更新 更多