我一直在寻找这个问题的答案,但我运气不好。这是我将解释的HTML:
<div class="news-overflow-hidden">
<h3>
<i class="pholder"></i>
<a href="/news/view/141524/" style="">ЕСПЧ присудил €15 000 экс-главе службы безопасности ЮКОСа</a> </h3>
<p class="news-text">
<a href="/news/view/141524/">В такую сумму Европейский суд по правам человека оценил несоблюдение в отношении мужчины презумпции невиновности и нарушение при исследовании свидетельских показаний в судах.</a> </p>
<i class="news-type-icon"></i>
</div>
我想要做的是抓住<a>
内的<p class="news-text">
。问题是<p class="news-text">
存在于其他地方,所以如果我抓住那个,我会抓住我不需要的东西。如何定位仅存在于此类段落中的<a>
标记?我可以使用此类获取所有段落,然后为每个段落创建一个if语句,以查看内容是否包含<a>
?想法?
答案 0 :(得分:4)
您可以将多个条件应用于单个CSS selector中的多个元素:
soup.select("p.news-text a")
这会找到a
元素的p
元素的所有news-text
个元素。
<强>演示:强>
In [11]: from bs4 import BeautifulSoup
In [12]: data = """<div class="news-overflow-hidden">
...: <h3>
...: <i class="pholder"></i>
...: <a href="/news/view/141524/" style="">ЕСПЧ присудил €15 000 экс-главе службы безопас
...: ности ЮКОСа</a> </h3>
...: <p class="news-text">
...: <a href="/news/view/141524/">В такую сумму Европейский суд по правам человека оценил
...: несоблюдение в отношении мужчины презумпции невиновности и нарушение при исследовании свиде
...: тельских показаний в судах.</a> </p>
...: <i class="news-type-icon"></i>
...: </div>"""
In [13]: soup = BeautifulSoup(data, "html.parser")
In [14]: for a in soup.select("p.news-text a"):
...: print(a.get_text(strip=True))
...:
В такую сумму Европейский суд по правам человека оценил несоблюдение в отношении мужчины презумпции невиновности и нарушение при исследовании свидетельских показаний в судах.