Поиск текста на веб-странице - PullRequest
1 голос
/ 25 апреля 2020

Я использую этот код для подключения к supremenewyork и выяснения, нет ли товара на складе или на складе. Похоже, поиск не работает

import requests
from bs4 import BeautifulSoup

url = 'https://www.supremenewyork.com/shop/jackets/xqfitokcd/sqt46dyvb'
res = requests.get(url)
html_page = res.content
soup = BeautifulSoup(html_page, 'html.parser')
text = soup.find_all("sold out")

print(text)

У меня есть код html, который четко показывает распроданный текст.

<b class="button sold-out">sold out</b>

Ответы [ 4 ]

1 голос
/ 25 апреля 2020

Давайте посмотрим на сигнатуру нашей функции find_all:

find_all(name, attrs, recursive, string, limit, **kwargs)

Эта функция может использоваться различными способами. Наиболее популярным будет поиск элементов по именам тегов. Для этого вы используете name и attrs arguments:

soup.find_all("b", {"class": "button sold-out"})

Эта команда находит все теги <b class="button sold-out"></b>.

Если вы однако вы действительно хотите искать текст, а не тег HTML, вы можете использовать аргумент string :

import re
soup.find_all(string=re.compile"sold out")

или если вы хотите найти все теги, которые содержат определенные Строка, которую вы можете назвать:

soup.find_all("b", string=re.compile"sold out")
1 голос
/ 25 апреля 2020

Похоже, вам нужно указать text='sold out'

text = soup.find_all(text='sold out')    
print(text)
1 голос
/ 25 апреля 2020

Вы можете использовать тег с желаемым классом, например:

soup.findAll("b", {"class": "button sold-out"})
0 голосов
/ 25 апреля 2020

@ DirtyBit Большое спасибо.

text = soup.find_all("b", {"class": "button sold-out"})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...