Как получить определенную строку HTML из определенного параметра текста в Python Requests / Beautiful Soup - PullRequest
0 голосов
/ 20 мая 2018

Я пытаюсь почистить сайт, на котором есть обувь.Каждый размер обуви имеет уникальный идентификатор варианта.Мне нужно выяснить, как получить этот идентификатор в зависимости от того, какой размер обуви я хочу.Пример HTML-кода сайта:

    <label for="variant_id_104685">43</label>

В этом примере размер обуви равен «43». Мне нужно получить этот сегмент variable_id_104685, не зная его заранее.Другими словами, входные данные будут запрашивать размер 43, а выходные данные будут возвращать этот идентификатор варианта.

Как мне это сделать?

1 Ответ

0 голосов
/ 20 мая 2018

Вы можете получить элемент label по тексту, а затем извлечь значение атрибута for:

size = "43"
soup.find(attrs={"for": True}, text=size)["for"]

Демо:

In [1]: from bs4 import BeautifulSoup

In [2]: data = '<label for="variant_id_104685">43</label>'

In [3]: soup = BeautifulSoup(data, "html.parser")

In [4]: size = "43"

In [5]: soup.find(attrs={"for": True}, text=size)["for"]
Out[5]: 'variant_id_104685'

Обратите внимание, что {"for": True} здесь помогает учитывать только элементы label, для которых определен атрибут for.Обычно у вас может быть более краткий способ запросить наличие атрибута с помощью аргумента ключевого слова, например soup.find(attribute_name=True), но в этом случае for является зарезервированным ключевым словом, и наличие чего-то вроде soup.find(text=size, for=True)["for"] приведет к синтаксической ошибке.

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