Как извлечь только числа из сети из атрибута <td>без идентификатора (красивым супом) - PullRequest
1 голос
/ 12 октября 2019

После получения ответа на мой http-запрос мне нужно идентифицировать 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. Но нет идентификатора, по которому я мог бы найти это значение и назначить соответствующий код, который был найден. В любом случае, как это сделать?

Есть ли здесь какой-нибудь возможный способ связать Code: "value" с правильным значением в 44 <\ td>? Я не смог написать рулеры, которые будут находить атрибуты после правильного кода: 64SPW.100 и определять, что в этом атрибуте есть только целое число, и назначать его коду?

Так что для каждого кода в ответе следуетдолжно быть ясно, что если будет код последовательности: 64SP.100 будет связан с ближайшей последовательностью <.td>, включая только целые числа <\ td>

1 Ответ

0 голосов
/ 12 октября 2019

Если я правильно понял ваш вопрос, вам нужно найти следующий тег <td>, содержащий только целые числа.

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

Возможно, вам потребуется настроить регулярное выражение для вашего конкретного случая. Я сопоставляю только положительные целые числа с пробелами или переводами строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...