【问题标题】:Selecting the first option from the select tag using python使用python从select标签中选择第一个选项
【发布时间】:2017-05-30 10:31:42
【问题描述】:

我有一个这样的选择标签:

<select name="select_tag">
<option value="">...</option>
<option value="Val1">Value1</option>
<option value="Val2">Value2</option>
<option value="Val3">Value3</option>
<option value="Val4">Value4</option>
</select>

我正在尝试使用漂亮的脚本从网页中解析上述内容,然后选择一个选项并发送该有效负载。我正在使用以下代码:

sauce = . . . . 
soup = bs.BeautifulSoup(sauce,"html.parser")
payload = dict()
inputs = form.findAll('select')
for i in inputs:
    input_1 = i.get('name')
    option_value = soup.find('option').get('value')
    payload[input_1] = option_value
    print(payload)

我的目标:在表单中找到选择标签,找到它的名称,从任何值不为空的选项标签中获取值(来自可用选项标签中的任何值,其中有一些值),发送有效载荷。

但是,当我运行上述脚本时,我将 option_value 设为“none”。 例如 = Payload Dict 的值:Payload = {'select_tag':'none'}

如果有人也可以像元素一样为元素指定答案,那将是非常重要的

【问题讨论】:

    标签: python python-3.x beautifulsoup


    【解决方案1】:

    您正在使用 find 作为选项而不是您应该使用 findAll 来查找所有选项。

    sauce = . . . . 
    soup = bs.BeautifulSoup(sauce,"html.parser")
    payload = dict()
    inputs = soup.findAll('select')
    for i in inputs:
        input_1 = i.get('name')
        for opt in i.findAll('option'):
            option_value = opt.get('value')
            payload[input_1] = option_value
        print(payload)
    

    【讨论】:

      【解决方案2】:

      看起来你正在期待这条线

      option_value = soup.find('option').get('value')
      

      每次你的代码调用它时做一些不同的事情。但事实并非如此。它每次都会识别第一个 &lt;option&gt; 标记,并且该标记具有您不想要的空白属性 value

      试试这个:

      option_tags=soup.findAll('option')
      values = [v.get('value') for v in option_tags]
      # Now you have ['', 'Val1', 'Val2', 'Val3', 'Val4'], remove the blank
      values = list(filter(None,values))
      # Now you have ['Val1', 'Val2', 'Val3', 'Val4']
      

      我不清楚循环应该做什么,所以我无法告诉你如何处理values

      【讨论】:

      • 我的代码有点麻烦。我想要的是从任何选项值发送一个任何值的单个有效负载。例如,如果有 3 个选项(下拉菜单)Orange、Apple、Grapes。我的有效载荷应该是 {'select-tag':'Orange'} (或任何水果,但值不应为空,仅此而已)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-27
      • 1970-01-01
      • 1970-01-01
      • 2019-10-18
      • 1970-01-01
      • 2015-09-20
      相关资源
      最近更新 更多