python - python从html中抓取输入值
问题描述
嘿,我需要为特定的运费抓取一个 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 天选项。
解决方案
如果您想获取 shipping method 的输入值(假设UPS Standard UK - Pick-up Point (2-4 business days)
在您的情况下),您可以先找到所有div
s,然后使用此方法选择一个。所以像这样的东西可以完成这项工作:
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']
推荐阅读
- matlab - 如何正确使用 col2im 功能?
- reactjs - 模块热更换系统通知 WebPack ZSH
- php - PHP 文件的元数据
- css - mat-select 样式显示默认值为block 不能更改?
- sql - 在存储过程优化方面,可以替代 join 中的强制转换函数吗?
- php - SQLSTATE [42000]:语法错误或访问冲突:1055 Laravel 5.8 MySQL
- node.js - 节点导出在控制台上写入两次..为什么?
- c# - 如何验证下载文件功能?
- elixir - 如何通过 Supervisor.init 启动命名代理?
- python - cron 事件的 chalice @app.schedule 语法是什么?