查找html元素bs4的子级的最快方法

时间:2019-02-08 13:53:39

标签: python html parsing web-scraping beautifulsoup

我有一些具有以下结构的HTML:

push "dhcp-option WHAT_IP?"
push "dhcp-option DOMAIN mydomain.xx"

现在我正在尝试使用bs4从此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>

但这给了我以下错误:

  

返回self.attrs [key]   KeyError:0

所以,总结一下我的问题:
如何使用bs4从html文档中的特定索引处获取特定孩子?

1 个答案:

答案 0 :(得分:1)

如果您希望类desc之后的跨度的第一个匹配项,则可以使用css child combinator将父类与子元素标记配对:

webSoup.select_one('.desc > span')

您还可以选择指定父级必须为div

div.desc > span

如果有多个匹配项,请使用webSoup.select,然后索引返回的列表。


您可以使用:

nextUrl = webSoup.findChildren()[3].findChildren()[0]
print(nextUrl)