Beautiful Soup 过滤关键字/属性 (python)

Vie*_*NaM 5 python filtering beautifulsoup web-scraping

我想使用 Beautiful Soup 和 requests 来抓取网站的数据,并且我几乎得到了我想要的,但我找不到一种方法来过滤最后的步骤:

这是我的代码:

variants = soup.find('div', class_='product-configure')
print(variants)
Run Code Online (Sandbox Code Playgroud)

这将打印以下内容:

<div class="product-configure">
<select id="custom-variants">
<option disabled="disabled" selected="selected">Maak een keuze</option>
<option data-status="available" data-value="177379037">Size : EU 40.5 (US 7) 
</option>
<option data-status="available" data-value="177379043">Size : EU 41.5 (US 8) 
</option>
<option data-status="available" data-value="177379223">Size : EU 42.5 (US 9) 
</option>
</select>
</div>
Run Code Online (Sandbox Code Playgroud)

我如何过滤它,以便它只打印“数据值”中的所有数字?(例如“177379037”作为第一行的输出)

这是 HTML:

          <div class="gui-select">
                  <div class="product-configure">
                        <select id="custom-variants">
            <option selected="selected" disabled="disabled">Select an option</option>
                            <option data-value="177379037" data-status="available">Size : EU 40.5 (US 7)</option>
                            <option data-value="177379043" data-status="available">Size : EU 41.5 (US 8)</option>
                            <option data-value="177379223" data-status="available">Size : EU 42.5 (US 9)</option>


        </div>
Run Code Online (Sandbox Code Playgroud)

Won*_*nka 5

您可以使用 soup.find_all() 并使用带有属性的字典

options = soup.find_all("option", {"data-value": True})
Run Code Online (Sandbox Code Playgroud)

结果:

for o in options:
    print(o.attrs["data-value"])
Run Code Online (Sandbox Code Playgroud)
177379037
177379043
177379223
Run Code Online (Sandbox Code Playgroud)