Python - 美丽的汤 - 类名存在两次

时间:2016-04-11 16:09:02

标签: python beautifulsoup

我现在正在学习如何使用BS4,但我还没想到的一件事是如何获得一个同名的另一个span类中的span类。

HTML示例

<span class="test class">
 <span class="another class">
  <span class="test class">
        data I want
  </span>

我为其他数据做的事情就像是

find('span', class_="test class").get_text().strip()

但是当我想拿第二节时,这需要第一节课。提前谢谢。

3 个答案:

答案 0 :(得分:1)

您需要使用another class类强制执行元素内的搜索。您可以通过链接find()来电来执行此操作:

elm = soup.find('span', class_="another class").find('span', class_="test class")
print(elm.get_text())

或者,一次性使用CSS selector

elm = soup.select_one("span.another.class > span.test.class")
print(elm.get_text())

其中>表示直接的父子关系。

答案 1 :(得分:0)

find_all('span', class_="test class")[1].get_text().strip()

这将找到带有class ='test class'的span的所有实例,将其存储在列表中。然后我们选择列表的第二个元素,它将对应于测试类的第二个元素。

答案 2 :(得分:0)

这对我有用:

from bs4 import BeautifulSoup

html = """
<span class="test class">
 <span class="another class">
  <span class="test class">
        data I want
  </span>
"""

soup = BeautifulSoup(html, 'html.parser')
span = soup.find('span', class_="test class")
print span.get_text().strip()
>>> data I want

系统详情:

  • Python 2.7.6
  • beautifulsoup4 == 4.4.0