#python #python-3.x #web-scraping #beautifulsoup #web-crawler
Вопрос:
HTML — код является :
<div class="card border p-3">
<span class="small text-muted">Contact<br></span>
<div>Steven Cantrell</div>
<div class="small">Department of Justice</div>
<div class="small">Federal Bureau of Investigation</div>
<!---->
<!---->
<!---->
<div class="small"><a href="mailto:skcantrell@fbi.gov ">skcantrell@fbi.gov</a></div>
<div class="small">256-313-8835</div>
</div>
Я хочу получить вывод внутри <div>
тега, т. Е. Steven Cantrell
.
Мне нужен такой способ, чтобы я мог получить содержимое следующего тега. В данном случае это 'span',{'class':'small text-muted'}
То, что я пытался, это :
rfq_name = soup.find('span',{'class':'small text-muted'})
print(rfq_name.next)
Но это напечатано Contact
вместо названия.
Ответ №1:
Вы почти на месте, просто измените свой отпечаток на: print(rfq_name.find_next('div').text)
Найдите элемент, содержащий текст "Contact"
. Затем используйте .find_next()
, чтобы получить следующий <div>
тег.
from bs4 import BeautifulSoup
html = '''<div class="card border p-3">
<span class="small text-muted">Contact<br></span>
<div>Steven Cantrell</div>
<div class="small">Department of Justice</div>
<div class="small">Federal Bureau of Investigation</div>
<!---->
<!---->
<!---->
<div class="small"><a href="mailto:skcantrell@fbi.gov ">skcantrell@fbi.gov</a></div>
<div class="small">256-313-8835</div>
</div>'''
soup = BeautifulSoup(html, 'html.parser')
contact = soup.find(text='Contact').find_next('div').text
Выход:
print(contact)
Steven Cantrell