首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用美观汤的Python解析

使用美观汤的Python解析
EN

Stack Overflow用户
提问于 2018-05-30 11:21:31
回答 1查看 142关注 0票数 0

我有下面的xml文件,我想提取所有的href,我知道怎么做,但是我想用----标记每个主‘父’标记的结束

我需要这样的输出:

代码语言:javascript
复制
xxxx yyyy ----- zzzz tttt ------ wwww qqqqq ssss uuuu oooo pppp ----- mmmm nnnnn ----

xml:

代码语言:javascript
复制
<root> <parent id1='1111'> <child herf='xxx'/> <child herf ='yyyy'/> </parent> <parent id1='22222'> <child herf='zzzz'/> <child herf ='tttt'/> </parent> <parent id1='33333'> <child herf='wwww'/> <child herf ='qqqqq'/> <parent id1='4444'> <child herf='ssss'/> <child herf ='uuuu'/> </parent> <parent id1='55555'> <child herf='oooo'/> <child herf ='pppp'/> </parent> <parent id1='6666'> <child herf='mmmm'/> <child herf ='nnnnn'/> </parent>

这是我的密码:

代码语言:javascript
复制
xml= soupTop.findChildren(recursive=False) for tag in xml: s =tag.findAll("child", {"href" : re.compile(r".*")}) print (s)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-30 14:37:30

一个问题是xml是无效的。<root>标记从不关闭,<child id1='33333'>也不关闭。BS善于接受不正确的输入,但是处理它需要非常谨慎。

这意味着我无法想象有一种方法可以获得你在问题中要求的输出。我能做的是:

  1. 假设每个新的打开父标记都会打开一个新的子序列。这意味着查找所有的parent标记,并且在每个进程中只有直接的子进程。 P in soupTop.findAll('parent '):c in p.children: if c.name == 'child':print(c‘’herf‘,end =’')打印(‘ 产出如下:
  2. 只处理最高级别的父标记,并且在每个父标记中递归地查找所有child标记。 P=soup.find(“父”),而p不是零:p.findAll(‘p.findAll ')中的c(’child '):print(c‘’herf‘,end=’‘)打印(’--‘-’‘,end =’)p= p.findNextSibling('parent') 输出是:xxx yyyy - zzzz is qqqqq ssss nnnnn
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50603385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档