2016-11-07 60 views
1

如何僅獲得其他標籤旁邊的特定標籤。所以如果我做如何用findall指定兒童標籤使用美麗蟒python

soup.findAll('blockquote')我會得到所有blockquotes列表,但我只想要blockquote那也旁邊的標籤名稱attr。 <a name="*">

所以我引用文字的名單將不包含這樣的事情:

<blockquote> 
    <i>Intro </i> 
    </blockquote> 

當我只想

<blockquote><a name="*"> </blockquote> 

這裏下面就是例子,但也有一些其他的塊引用,與其他內標籤。但我只想要<a name="*">內標。

<blockquote> 
<i>Intro </i> 
</blockquote>, <blockquote> 
<a name="1">a </a><br> 
</br></blockquote>, <blockquote> 
<a name="2">x </a><br> 
<a name="3">y </a><br> 
<a name="4">z </a><br> 
</br></br></br></blockquote> 

好,altermately我想我想是這樣的

<blockquote> 
    <a name="1">a </a><br> 
    </br></blockquote>, <blockquote> 
    <a name="2">x </a><br> 
    <a name="3">y </a><br> 
    <a name="4">z </a><br> 
    </br></br></br></blockquote> 

回答

1

結果怎麼樣讓所有的a標記,是標籤直接孩子,然後讓他們的父母(引用文字) ?

from bs4 import BeautifulSoup 

soup = BeautifulSoup(""" 
<blockquote> 
<i>Intro </i> 
</blockquote>, <blockquote> 
<a name="1">a </a><br> 
</br></blockquote>, <blockquote> 
<a name="2">x </a><br> 
<a name="3">y </a><br> 
<a name="4">z </a><br> 
</br></br></br></blockquote> 
""", 'html.parser') 

for a in soup.select('blockquote > a'): 
    print(a.parent) 

結果:

<blockquote> 
<a name="1">a </a><br> 
</br></blockquote> 
<blockquote> 
<a name="2">x </a><br> 
<a name="3">y </a><br> 
<a name="4">z </a><br> 
</br></br></br></blockquote> 
2

或者,你可以做一個searching function

soup.find_all(lambda tag: tag.name == "blockquote" and tag.a) 

其中tag.a相當於tag.find("a")

換句話說,這將找到所有元素具有a子元素。