Как получить класс especif после другого специального класса в python с помощью beautiful soup?

#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.