[英]Python BeautifulSoup find all tags under a certain type of tag
我有一个带有嵌套标签的XML文件,例如:
<tag1>
<tag2>text0</tag2>
text1
<tag2>text2</tag2>
</tag1>
<tag2>text3</tag2>
text4
<tag1>
<tag2>text5</tag2>
</tag1>
我想获取所有tag2
的所有内容的地方,但tag2
是它们包含在tag1
。 因此,在此示例中: text0
, text2
和text5
。 而不是text1
。
我目前正在双重for循环中执行此操作。 但是以后的文件将具有多个级别,我想避免嵌套许多for循环。
这是我的代码:
tag1entries = soup.find_all('tag1')
for tag1entry in tag1entries:
tag2entries = tag1entry.find_all('tag2')
for tag2entry in tag2entries:
do_something(tag2entry.contents)
有谁知道更好的方法?
您可以使用CSS选择器 ,例如,选择tag2
是直接子tag1
:
tag2entries = soup.select('tag1 > tag2')
或者,在tag1
内的任意位置选择tag2
:
tag2entries = soup.select('tag1 tag2')
您可以使用列表理解:
entry_list = [entry.text for entry in soup.find_all('tag2') if entry.parent.name == 'tag1']
结果是:
['text0', 'text2', 'text5']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.