我怎样才能得到下一个孩子

2024-04-20 07:22:04 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的HTML和代码:

<a class="card__article-link" href="linktoarticle" title="articletitle">
<span class="card__egida">TEXT</span>
<span class="card__title ">TITLE</span>
<span class="card__subtitle">SUBTITLE</span>
</a>

import requests
from bs4 import BeautifulSoup
r = requests.get("link").text
soup = BeautifulSoup(r, "html.parser")

for span in soup.find_all("span", {"class": "card__egida"}):
    print(span.get_text())

代码正确地打印文本,但我希望代码也打印标题和副标题。我尝试过nextSibling,但没有成功。 我该怎么做


1条回答
网友
1楼 · 发布于 2024-04-20 07:22:04

您可以使用.find_next()获取下一个元素:

from bs4 import BeautifulSoup


txt = '''<a class="card__article-link" href="linktoarticle" title="articletitle">
<span class="card__egida">TEXT</span>
<span class="card__title ">TITLE</span>
<span class="card__subtitle">SUBTITLE</span>
</a>'''

soup = BeautifulSoup(txt, 'html.parser')    

for span in soup.find_all("span", {"class": "card__egida"}):
    egida = span.get_text()
    title = span.find_next(class_='card__title').get_text()
    subtitle = span.find_next(class_='card__subtitle').get_text()

    print(egida)
    print(title)
    print(subtitle)

印刷品:

TEXT
TITLE
SUBTITLE

或者:您可以选择父项<a>,然后搜索标题、副标题等:

for a in soup.select('a.card__article-link'):
    egida = a.select_one('.card__egida').get_text()
    title = a.select_one('.card__title').get_text()
    subtitle = a.select_one('.card__subtitle').get_text()

相关问题 更多 >