2017-06-06 57 views
2

我一直在尋找這個問題的答案,但我有幸運。這裏是我會解釋HTML:Python美麗的湯:只在另一個目標標籤

<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> 

我想要做的就是抓住的<p class="news-text"><a>。問題是<p class="news-text">存在於其他地方,所以如果我抓住這一點,我會抓住我不需要的東西。我該如何定位<a>標籤只存在於這種類型的段落中?我可以用這個類抓住所有段落,然後爲每個段落做一個if語句,看看內容是否包含<a>?想法?

回答

4

可以將多個條件,多個元素在一個單一的CSS selector

soup.select("p.news-text a") 

這樣,就會找到所有a元素是具有​​類p元素的兒童。

演示:

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)) 
    ...:  
В такую сумму Европейский суд по правам человека оценил несоблюдение в отношении мужчины презумпции невиновности и нарушение при исследовании свидетельских показаний в судах.