繁体   English   中英

Python BeautifulSoup在某种标签类型下查找所有标签

[英]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 因此,在此示例中: text0text2text5 而不是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM