如何在beautifulsoup中找到<div> <span> text </span> </div>的文本?

时间:2016-10-27 04:33:05

标签: python html web-scraping beautifulsoup html-parsing

这是HTML:

<div><div id="NhsjLK">
<li class="EditableListItem NavListItem FollowersNavItem NavItem not_removable">
<a href="/profile/Dileep-Sankhla/followers">Followers <span class="list_count">92</span></a></li></div></div>

我想提取文本92并将其转换为整数并在python2中打印。我怎么能够? 代码:

i = soup.find('div', id='NhsjLK')
    print "Followers :", i.find('span', id='list_count').text

1 个答案:

答案 0 :(得分:4)

我不会直接在课堂上获取它,因为我认为“list_count”太宽泛了类值,可能会用于页面上的其他内容。

这个HTML代码片段肯定有几个不同的选项,但从我的观点来看,最好的一个就是使用“追随者”文本/标签并获得它的下一个兄弟:

from bs4 import BeautifulSoup

data = """
<div><div id="NhsjLK">
<li class="EditableListItem NavListItem FollowersNavItem NavItem not_removable">
<a href="/profile/Dileep-Sankhla/followers">Followers <span class="list_count">92</span></a></li></div></div>"""

soup = BeautifulSoup(data, "html.parser")
count = soup.find(text=lambda text: text and text.startswith('Followers')).next_sibling.get_text()
count = int(count)
print(count)

或者,另一个非常简洁可靠的方法是在父{的*=值上使用部分匹配(下面的href部分){ {1}}元素:

a

或者,您可以检查父count = int(soup.select_one("a[href*=followers] .list_count").get_text()) 元素的类值:

li