Содержание атрибута - BeautifulSoup - PullRequest
2 голосов
/ 16 июня 2020

Я пытаюсь подобрать атрибут цены в следующем html:

<html><body><p>[<meta content="60.00" itemprop="price"/>]</p></body></html>

Я использую библиотеку beautifulsoup в python3.

Ниже мой текущий код . Однако я пробовал много итераций, используя документы.

soup = bs4.BeautifulSoup(res.text, 'lxml')
soup = bs4.BeautifulSoup(str(price), 'lxml')
for element in soup.find_all():
            print(element ["content"])

В настоящее время приведенный выше код просто снова выводит ту же строку html.

Результат, которого я пытаюсь достичь, является с использованием атрибута 'content', который не всегда 'content', но в данном случае это так, и получение значения 60.00.

Любая помощь будет принята с благодарностью.

Спасибо !

Ответы [ 2 ]

3 голосов
/ 16 июня 2020

Можете попробовать.

from bs4 import BeautifulSoup
html_doc ="""<html><body><p>[<meta content="60.00" itemprop="price"/>]</p></body></html>"""

soup= BeautifulSoup(html_doc, 'lxml')
price = soup.find("p").meta['content']

print(price)

Результат будет:

60.00
0 голосов
/ 16 июня 2020

, поскольку ваш <meta content="60.00" itemprop="price"/> не содержит никакого другого десятичного значения, вы можете использовать этот код:)

import re
from bs4 import BeautifulSoup
html = """<html><body><p>[<meta content="60.00" itemprop="price"/>]</p></body></html>"""
soup = BeautifulSoup(html)
x = soup.findAll(name = 'meta')
print(re.sub('[^0-9,.]', '', str(x)))

Результат будет: 60.00

...