嘿,我需要刮一个html来获取特定的运费,这里是HTML:
<ul class="methods" id="shipping-quotes" data-url="/en/webshipper/setshippingquote" data-shipping-fee="£ 12">
<li class="method-option method-option--shipping">
<div class="method-option__header">
<input
id="shippingrate-8"
name="shippingrate"
type="radio"
value="8"
class="method-option__input shipping-rate"
/>
<label for="shippingrate-8" class="method-option__label">
<span class="method-option__name">UPS Standard UK - Home Delivery (2-4 business days)</span>
<span class="method-option__fee">9 GBP</span>
</label>
</div>
</li>
<li class="method-option method-option--shipping">
<div class="method-option__header">
<input
id="shippingrate-9"
name="shippingrate"
type="radio"
value="9"
class="method-option__input shipping-rate"
/>
<label for="shippingrate-9" class="method-option__label">
<span class="method-option__name">UPS Standard UK - Pick-up Point (2-4 business days)</span>
<span class="method-option__fee">6 GBP</span>
</label>
</div>
</li>
<li class="method-option method-option--shipping">
<div class="method-option__header">
<input
id="shippingrate-15"
name="shippingrate"
type="radio"
value="15"
class="method-option__input shipping-rate"
/>
<label for="shippingrate-15" class="method-option__label">
<span class="method-option__name">UPS Express UK - Home Delivery (2-4 business days)</span>
<span class="method-option__fee">15 GBP</span>
</label>
</div>
</li>
<li class="method-option method-option--shipping">
<div class="method-option__header">
<input
id="shippingrate-29"
name="shippingrate"
type="radio"
value="29"
class="method-option__input shipping-rate"
checked
/>
<label for="shippingrate-29" class="method-option__label">
<span class="method-option__name">UPS Express UK - Pick-up Point (1-3 business days)</span>
<span class="method-option__fee">12 GBP</span>
</label>
</div>
<div class="drop-points" id="drop-points">
<p class="drop-point drop-point--no-result">
No pickup points found near your chosen location
</p>
</div>
</li>
</ul>具体来说,家庭传递选项,所以在下面的HTML中,我需要得到value= 9的值,所以我想得到9的值,如何使用bs4获得家庭传递选项的具体值?
如果我不清楚,我指的是这里面的价值选择。
<input
id="shippingrate-9"
name="shippingrate"
type="radio"
value="9"
class="method-option__input shipping-rate"
/>为家庭送货2-4天的选择。
发布于 2021-03-08 17:21:45
如果您想获取传递方法的输入值(假设是UPS Standard UK - Pick-up Point (2-4 business days) ),您可以首先找到所有的div,然后使用该方法选择一个。所以像这样的东西就能完成任务:
data = soup.find('ul', attrs={'id': 'shipping-quotes'}).find_all('div', class_='method-option__header')
values = [each.input['value'] for each in data if each.find('span', class_='method-option__name').text == 'UPS Standard UK - Pick-up Point (2-4 business days)']values将是:
['9']发布于 2021-03-08 20:24:24
你根本没有表现出任何努力,但既然我需要休息.
from bs4 import BeautifulSoup
data = '''\
<ul class="methods" id="shipping-quotes" data-url="/en/webshipper/setshippingquote" data-shipping-fee="£ 12">
<li class="method-option method-option--shipping">
<div class="method-option__header">
<input id="shippingrate-8" name="shippingrate" type="radio" value="8" class="method-option__input shipping-rate" />
<label for="shippingrate-8" class="method-option__label">
<span class="method-option__name">UPS Standard UK - Home Delivery (2-4 business days)</span>
<span class="method-option__fee">9 GBP</span></label></div>
</li>
<li class="method-option method-option--shipping">
<div class="method-option__header">
<input id="shippingrate-9" name="shippingrate" type="radio" value="9" class="method-option__input shipping-rate" />
<label for="shippingrate-9" class="method-option__label">
<span class="method-option__name">UPS Standard UK - Pick-up Point (2-4 business days)</span>
<span class="method-option__fee">6 GBP</span></label></div>
</li>
<li class="method-option method-option--shipping">
<div class="method-option__header">
<input id="shippingrate-15" name="shippingrate" type="radio" value="15" class="method-option__input shipping-rate" />
<label for="shippingrate-15" class="method-option__label">
<span class="method-option__name">UPS Express UK - Home Delivery (2-4 business days)</span>
<span class="method-option__fee">15 GBP</span></label></div>
</li>
<li class="method-option method-option--shipping">
<div class="method-option__header">
<input id="shippingrate-29" name="shippingrate" type="radio" value="29" class="method-option__input shipping-rate"
checked="checked" />
<label for="shippingrate-29" class="method-option__label">
<span class="method-option__name">UPS Express UK - Pick-up Point (1-3 business days)</span>
<span class="method-option__fee">12 GBP</span></label></div>
<div class="drop-points" id="drop-points">
<p class="drop-point drop-point--no-result">No pickup points found near your chosen location</p>
</div>
</li>
</ul>
'''
soup = BeautifulSoup(data, 'html.parser')
for d in soup.select('div.method-option__header'):
rate = d.find('input', {'name': 'shippingrate'}).attrs['value']
name = d.find('span', {'class': 'method-option__name'}).text
fee = d.find('span', {'class': 'method-option__fee'}).text
print(f"{rate}\t{name}\t{fee}")https://stackoverflow.com/questions/66534119
复制相似问题