如何从没有标识符的属性中仅从网络中提取数字<td>(通过美丽的汤)



在得到对我的http请求的响应后,我需要在响应中识别ID并为其分配值。 基本上,我执行加载页面的程序,按ID搜索产品,然后阅读网页内容并为该产品分配实际库存价值。

test = s.get(test)
soup = BeautifulSoup(test.text, "html.parser")
table = soup.find("table",class_="table")
code = table.find("small",class_="code")
listTd=table.findAll("td") #iam able to find all td where are data saved.
#Here i don´t know how to identify the corrrect td which contains only int values ( it pressents actual number of products on stock, i need extract that).#

#Here is response from web:
[<td>
<a href="/Products/19321">
<small class="code">Code: 64SPW.100</small>
<span class="product_description">
<span class="description">Ø10x22x72 ØG.10</span>
</span>
</a>
</td>, <td>
72.37 EUR/NP
<br/>
<span class="iva">(excluding VAT 0%)</span>
</td>, <td>
55%
</td>, <td>
32.57 EUR/NP
<br/>
<span class="iva">(excluding VAT 0%)</span>
</td>, <td>
44                    </td>, <td class="shopping">
<div class="add_to_cart">
<form action="/Products/19321/AddToCart?returnUrl=%2FProducts%2FSearch%3Fquery%3D64SPW.100" method="post"> <div class="input-append">
<input autocomplete="off" class="span1" name="quantity" type="text" value="1"/>
<span class="add-on">NP</span>
</div>
<input class="btn btn-primary loader" type="submit" value="Add to cart"/>
</form>
</div>
</td>, <td>
<a href="/Products/19322">
<small class="code">Code: 64SPW.100C</small>
<span class="product_description">
<span class="description">Ø10x22x72 ØG.10 Cer-A</span>
</span>
</a>
</td>, <td>
79.44 EUR/NP
<br/>
<span class="iva">(excluding VAT 0%)</span>
</td>, <td>
55%
</td>, <td>
35.75 EUR/NP
<br/>
<span class="iva">(excluding VAT 0%)</span>
</td>, <td>
8                    </td>,

正如您在代码中看到的:代码:64SPW.100,因此我获取 64SPW.100 值并在网络上搜索它,并且必须以某种方式将其与值 44 链接。但是没有标识符,我可以根据它找到此值并分配给搜索的正确代码 到底有办法吗?

这里有没有可能的方法如何将代码:"值"与 44 <\td> 中的正确值链接?我无法编写 rullers,它会在正确的代码:64SPW.100 之后找到属性,并确定此属性中只有 int 数字并将其分配给代码?

因此,对于响应中的每个代码都应该清楚,如果有序列 Code:64SP.100 将与最接近的序列 <.td 链接>仅包含整数 <\td>

如果我正确理解了您的问题,则需要找到下一个仅包含整数的<td>标签。

  • 您可以使用正则表达式作为过滤器。

  • find_next - 查找与筛选器匹配的下一个元素。

code.find_next('td', text=re.compile(r'^[ns]*d+[ns]*$')

您可能需要针对特定情况调整正则表达式。我只匹配带有空格或换行符的正整数。

最新更新