84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
这就是HTML的样子:
<p class="details"> <span>detail1</span> <span class="number">1</span> <span>detail2</span> <span>detail3</span> </p>
我需要提取detail2和detail3。
但是使用这段代码,我只能得到detail1。
info = data.find("p", class_ = "details").span.text
我该如何提取所需的项目?
提前感谢!
在你的情况下,选择更具体的元素,即选择所有具有class为number的元素的兄弟元素:
soup.select('span.number ~ span')
from bs4 import BeautifulSoup html='''<p class="details"> <span>detail1</span> <span class="number">1</span> <span>detail2</span> <span>detail3</span> </p>''' soup = BeautifulSoup(html) [t.text for t in soup.select('span.number ~ span')]
['detail2', 'detail3']
您可以找到所有的 <span> 并进行普通索引:
<span>
from bs4 import BeautifulSoup html_doc = """\ <p class="details"> <span>detail1</span> <span class="number">1</span> <span>detail2</span> <span>detail3</span> </p>""" soup = BeautifulSoup(html_doc, "html.parser") spans = soup.find("p", class_="details").find_all("span") for s in spans[-2:]: print(s.text)
输出结果:
detail2 detail3
或者使用 CSS 选择器:
spans = soup.select(".details span:nth-last-of-type(-n+2)") for s in spans: print(s.text)
在你的情况下,选择更具体的元素,即选择所有具有class为number的元素的兄弟元素:
示例
输出
您可以找到所有的
<span>
并进行普通索引:输出结果:
或者使用 CSS 选择器:
输出结果: