Самый быстрый способ найти дочерний элемент HTML-элемента bs4 - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть некоторый HTML, имеющий следующую структуру:

<div class="article">
    <h1 class="header">Birth Date between 1919-01-01 and 2019-01-01, Oscar-Winning, Oscar-Nominated, Males (Sorted by Popularity Ascending) </h1>
    <br class="clear"/>
    <div class="desc">
        <span>1-100 of 716 names.</span> // I WANT THIS ELEMENT
        <span class="ghost">|</span> <a class="lister-page-next next-page" href="/search/name?birth_date=1919-01-01,2019-01-01&amp;groups=oscar_winner,oscar_nominee&amp;gender=male&amp;count=100&amp;start=101&amp;ref_=rlm">Next »</a>
    </div>
    <br class="clear"/>
</div>

Теперь я пытаюсь извлечь из этого html определенный элемент с помощью bs4.Я пытался сделать:

webSoup = BeautifulSoup(html, 'html.parser')
nextUrl = webSoup.findChildren()[2][0]

, но это дает мне следующую ошибку:

return self.attrs [key] KeyError: 0

Итак, подведем итог моего вопроса:
Как получить конкретного ребенка по определенному индексу из HTML-документа с помощью bs4?

1 Ответ

0 голосов
/ 08 февраля 2019

Если вы хотите первое совпадение для span, следующего за классом desc, то вы можете использовать css дочерний комбинатор , чтобы связать родительский класс с тегом дочернего элемента:

webSoup.select_one('.desc > span')

YouМожно также указать, что родитель должен быть div

div.desc > span

Если найдено более одного совпадения, используйте webSoup.select, а затем индекс в возвращаемом списке.


Вы можете использовать:

nextUrl = webSoup.findChildren()[3].findChildren()[0]
print(nextUrl)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...