Получить значение тега, используя часть текста - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь получить значение тега «data-value», используя только часть текста в примере - размер (EU: 41,5), но я понятия не имею, как это сделать.

Есть html код сайта.

<a class="m-productDescr_sizeBtn js-sizeItem js-tooltipHtml js-tooltip_rm" data-tip="    <span>   US: 8,5  </span>
<span>   EU: 41,5  </span>" data-value="787631046" data-carturl="/cart/add?id=787631046" data-hasqtip="1" aria-describedby="qtip-1">
                            41,5
                        </a>

Я пытался сделать это

soup.find_all(string=re.compile('EU: 41,5'))

, но он возвращает только размер, связанный со строкой.

Ответы [ 2 ]

0 голосов
/ 17 марта 2020

Попробуйте что-то вроде этого:

val = """your html above"""

from bs4 import BeautifulSoup as bs
soup = bs(val,'lxml')
dvs = soup.select('a[data-value]')
for dv in dvs:
    print(dv['data-value'])

Вывод:

787631046

0 голосов
/ 17 марта 2020

Используйте parent, чтобы получить родителей элементов, которые вы нашли, вот где атрибут data-value.

values = [span.parent.attrs['data-value'] for span in soup.find_all(string=re.compile('EU: 41,5'))]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...