收到对我的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>中将Code:“ value”与正确的值链接起来?我没办法写出标尺,它将在正确的代码64SPW.100之后找到属性,并确定该属性中只有int号并将其分配给代码吗?
因此,对于每个响应代码,都应明确指出,如果有序列,则Code:64SP.100将与最接近的序列链接。
答案 0 :(得分:0)
如果我正确理解了您的问题,则需要查找仅包含整数的下一个<td>
标记。
find_next-查找与过滤器匹配的下一个元素。
code.find_next('td', text=re.compile(r'^[\n\s]*\d+[\n\s]*$')
您可能需要针对特定情况调整正则表达式。我只匹配带空格或换行符的正整数。