Чтобы получить текст внутри тегов, есть несколько подходов:
a) Используйте атрибут тега .text
.
cars = soup.find_all('span', attrs={'class': 'listing-row__price'})
for tag in cars:
print(tag.text.strip())
Вывод
$71,996
$75,831
$71,412
$75,476
....
b) Использование get_text ()
for tag in cars:
print(tag.get_text().strip())
c) Если внутри есть только эта строка внутритег , вы также можете использовать эти опции
.string
.contents[0]
next(tag.children)
next(tag.strings)
next(tag.stripped_strings)
т.е.
for tag in cars:
print(tag.string.strip()) #or uncomment any of the below lines
#print(tag.contents[0].strip())
#print(next(tag.children).strip())
#print(next(tag.strings).strip())
#print(next(tag.stripped_strings))
Выходы:
$71,996
$75,831
$71,412
$75,476
$77,001
...
Примечание:
.text
и .string
не совпадают.Если в теге есть другие элементы, .string
возвращает None
, а .text возвращает текст внутри тега.
from bs4 import BeautifulSoup
html="""
<p>hello <b>there</b></p>
"""
soup = BeautifulSoup(html, 'html.parser')
p = soup.find('p')
print(p.string)
print(p.text)
Outputs
None
hello there