如何只获取其他标记旁边的特定标记。所以如果我这样做
soup.findAll('blockquote')
我将获得所有blockquotes的列表,但我只想要一个名称为attr的标签旁边的blockquote。 <a name="*">
所以我的blockquotes列表不会包含这样的内容:
<blockquote>
<i>Intro </i>
</blockquote>
当我只想要
时<blockquote><a name="*"> </blockquote>
下面是示例,但还有一些其他的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>
好吧,相反,我希望得到这样的结果
<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>
答案 0 :(得分:2)
或者,您可以使用searching function一次性 :
soup.find_all(lambda tag: tag.name == "blockquote" and tag.a)
其中tag.a
相当于tag.find("a")
。
换句话说,这会找到具有blockquote
子元素的所有a
元素。
答案 1 :(得分:1)
如何获取所有a
代码,这些代码是blockquote
代码的直接子代,然后获取其父代(blockquotes)?
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>