Html 如何使用BeautifulSoup在Python中隔离只有一到两个数字的解析结果

Html 如何使用BeautifulSoup在Python中隔离只有一到两个数字的解析结果,html,python-3.x,web-scraping,beautifulsoup,Html,Python 3.x,Web Scraping,Beautifulsoup,在继续我的FreshDirect计划的过程中,我希望得到我的常规订单数量的值。我需要得到这些值,以便最终自动化订购过程,但目前这是我一直坚持的。有没有办法只获取项目数量的值 我试图通过HTML中的“input”标记进行解析。然后,我使用re.sub尝试隔离数字。我仍然得到一大堆的值,包括字母。作为参考,我希望解析的HTML如下所示: <input id="qty_cartline_change_-1313013247" class="qty" type="text" name="qty"

在继续我的FreshDirect计划的过程中,我希望得到我的常规订单数量的值。我需要得到这些值,以便最终自动化订购过程,但目前这是我一直坚持的。有没有办法只获取项目数量的值

我试图通过HTML中的“input”标记进行解析。然后,我使用re.sub尝试隔离数字。我仍然得到一大堆的值,包括字母。作为参考,我希望解析的HTML如下所示:

<input id="qty_cartline_change_-1313013247" class="qty" type="text" name="qty" value="1" maxlength="4" data-component="quantitybox.value" data-productdata-name="quantity">
我希望它只抓取“value=”旁边的数字(应该是1) 对于我库存中的所有物品。现在我能够得到这些数字,但我也得到了大量额外的co
entercode here
ntent,我不知道为什么

What I get that is good: 1
{'Quantity': '1'}
1
{'Quantity': '1'}
1
{'Quantity': '1'}
1
{'Quantity': '1'}
1
{'Quantity': '1'}
1
{'Quantity': '1'}
1

如果使用BeautifulGroup,则可以使用属性=值选择器

soup = BeautifulSoup(your_html, 'lxml')
values = [item['value'] for item in soup.select("input[value]")]

您可以查看哪种选择器组合提供最佳结果。上面我添加了
属性,以确保
输入
标记具有
属性,但您可能可以使用以下内容来确保它是数量
输入
标记。您可以假设存在一个
属性

values = [item['value'] for item in soup.select("input[data-productdata-name=quantity]")]
不假设存在
属性并指定必须存在:

values = [item['value'] for item in soup.select("input[value][data-productdata-name=quantity]")]
这可能是最可靠的


如果您确定
productdata name=quantity
attribute=value对仅对具有值属性的数量输入值出现,则执行以下操作会更快:

values = [item['value'] for item in soup.select("[data-productdata-name=quantity]")]

单数首个匹配版本为:

value = soup.select_one("[data-productdata-name=quantity]")['value']

例如:

from bs4 import BeautifulSoup

html = '''<input id="qty_cartline_change_-1313013247" class="qty" type="text" name="qty" value="1" maxlength="4" data-component="quantitybox.value" data-productdata-name="quantity">'''

soup = BeautifulSoup(html, 'lxml')
values = [item['value'] for item in soup.select("input[value]")]
print(values)
从bs4导入美化组
html=“”“
soup=BeautifulSoup(html,“lxml”)
值=[item['value']表示汤中的项目。选择(“input[value]”)
打印(值)

谢谢!我将尝试实施这个解决方案,并看看它会带来什么结果。再次谢谢你,完成了。是的,这个答案很好,肯定让我走上了正确的道路。非常感谢。
value = soup.select_one("[data-productdata-name=quantity]")['value']
from bs4 import BeautifulSoup

html = '''<input id="qty_cartline_change_-1313013247" class="qty" type="text" name="qty" value="1" maxlength="4" data-component="quantitybox.value" data-productdata-name="quantity">'''

soup = BeautifulSoup(html, 'lxml')
values = [item['value'] for item in soup.select("input[value]")]
print(values)