我正在尝试构建一个运动鞋机器人,现在我正努力从网站上获取数据值,这些值用于结帐页面的网址中。
我已使用以下BeautifulSoup命令抓取
size=soup.find(id="custom-variants")
并获得以下输出:
<select id="custom-variants">
<option disabled="disabled" selected="selected">Make a choice</option>
<option data-status="available" data-value="191707602">Size : EU 38.5 (US 6)</option>
<option data-status="available" data-value="191707614">Size : EU 39 (US 6.5)</option>
<option data-status="available" data-value="191707617">Size : EU 40 (US 7)</option>
<option data-status="available" data-value="191707623">Size : EU 40.5 (US 7.5)</option>
<option data-status="available" data-value="191707626">Size : EU 41 (US 8)</option>
<option data-status="available" data-value="191707632">Size : EU 42 (US 8.5)</option>
<option data-status="available" data-value="191707641">Size : EU 42.5 (US 9)</option>
<option data-status="available" data-value="191707644">Size : EU 43 (US 9.5)</option>
<option data-status="available" data-value="191707650">Size : EU 44 (US 10)</option>
<option data-status="available" data-value="191707656">Size : EU 44.5 (US 10.5)</option>
<option data-status="available" data-value="191707659">Size : EU 45 (US 11)</option>
<option data-status="available" data-value="191707662">Size : EU 45.5 (US 11.5)</option>
<option data-status="available" data-value="191707665">Size : EU 46 (US 12)</option>
<option data-status="available" data-value="191707599">Size : EU 38 (US 5.5)</option>
</select>
但是我真正想要的是选项标签中的数据值。
任何人都可以帮忙。
答案 0 :(得分:1)
尝试一下
from bs4 import BeautifulSoup
html = '''<select id="custom-variants">
<option disabled="disabled" selected="selected">Make a choice</option>
<option data-status="available" data-value="191707602">Size : EU 38.5 (US 6)</option>
<option data-status="available" data-value="191707614">Size : EU 39 (US 6.5)</option>
<option data-status="available" data-value="191707617">Size : EU 40 (US 7)</option>
<option data-status="available" data-value="191707623">Size : EU 40.5 (US 7.5)</option>
<option data-status="available" data-value="191707626">Size : EU 41 (US 8)</option>
<option data-status="available" data-value="191707632">Size : EU 42 (US 8.5)</option>
<option data-status="available" data-value="191707641">Size : EU 42.5 (US 9)</option>
<option data-status="available" data-value="191707644">Size : EU 43 (US 9.5)</option>
<option data-status="available" data-value="191707650">Size : EU 44 (US 10)</option>
<option data-status="available" data-value="191707656">Size : EU 44.5 (US 10.5)</option>
<option data-status="available" data-value="191707659">Size : EU 45 (US 11)</option>
<option data-status="available" data-value="191707662">Size : EU 45.5 (US 11.5)</option>
<option data-status="available" data-value="191707665">Size : EU 46 (US 12)</option>
<option data-status="available" data-value="191707599">Size : EU 38 (US 5.5)</option>
</select>'''
soup = BeautifulSoup(html, 'html.parser')
for option in soup.find_all('option'):
print(option.attrs)
print(option.text)
print('-----')
data_values = [option.attrs.get('data-value') for option in soup.find_all('option')]
print(data_values)