#python #html #beautifulsoup
#python #HTML #beautifulsoup
Вопрос:
В источнике веб-сайта я нашел это:
<div class = "g">..<div>
<div class = "g">..<div>
<div class = "g">..<div>
<div class = "g">..<div>
<jsmodel="gpo5Gf" class="LnbJhc"...>..<div>
<div class = "g">..<div>
<div class = "g">..<div>
Мне нужно получить доступ / получить информацию о классе "g"
, но только те, которые находятся после jsmodel
Кто-нибудь может мне помочь?
Я использую python3 /beautifulsoup
Комментарии:
1. вы читали документацию для
beautifulsoup
?beautifulsoup
имеет какие-либо полезные функции, и их полезно знать (даже если вы не используете их каждый день).2. да, я прочитал документацию и попытался реализовать «find_next» /»find_next_all», но у меня не получилось
3. тогда вы должны сказать это в вопросе. И если вы получаете сообщение об ошибке, тогда вы должны показать его в вопросе. Таким образом, нам не нужно тратить время на то, что вы уже знаете
Ответ №1:
Я предположил, что вы имеете в виду <div jsmodel="..."
вместо <jsmodel="..."
BeautifulSoup имеет много функций — не только find()
и find_all()
.
Существует также find_next()
, find_all_next()
, find_next_sibling()
, find_next_siblings()
, и т.д.
Таким образом, вы можете использовать find()
to div
с jsmodel
, а затем использовать find_next()
для поиска следующего элемента.
text = '''
<div class="g">..</div>
<div class="g">..</div>
<div jsmodel="gpo5Gf" class="LnbJhc">..</div>
<div class="g">FIRST</div>
<div class="g">SECOND</div>
<div class="x">OTHER class</div>
'''
from bs4 import BeautifulSoup as BS
soup = BS(text, 'html.parser')
model = soup.find('div', {'jsmodel': True})
#model = soup.find('div', {'jsmodel': "gpo5Gf"})
div = model.find_next('div')
#div = model.find_next('div', {'class', 'g'})
print(div)
Комментарии:
1. итак, вы можете пометить мой ответ как принятый. И через несколько минут вы можете проголосовать за него.
2.Я использую этот ответ для создания post также с помощью
find_previous()
Python: Как найти следующий элемент после другого элемента с помощью BeautifulSoup.