2024-05-18 05:37:09 发布
网友
<parent1> <span>Text1</span> </parnet1> <parent2> <span>Text2</span> </parnet2> <parent3> <span>Text3</span> </parnet3>
我正在用Python&beauthoulsoup解析它。我有一个变量soupData,它存储needobject的指针。如何获取parent2的指针,例如,如果我有文本Text2。所以问题是根据内容过滤span标记。我该怎么做?在
更正结束标记的拼写后:
[e for e in soup(recursive=False, text=False) if e.span.string == 'Text2']
使用python2.7.6和beautifulsoup4.3.2,我发现Marcelo的答案是给出一个空列表。不过,这对我很有效:
[x.parent for x in bSoup.findAll('span') if x.text == 'Text2'][0]
或者,对于一个可笑的过度设计的解决方案(至少对于这个特定的问题,但是如果您对条件进行过滤的时间太长而无法放入一个合理容易理解的列表表达式,则可能会有用),您可以:
创建函数工厂,然后
hasTextText2 = hasText('Text2') filter(hasTextText2,bSoup.findAll('span'))[0].parent
获取对您要查找的父标记的引用
我不认为有一种方法可以一步到位。所以:
for parenttag in soupData: if parenttag.span.string == "Text2": do_stuff(parenttag) break
可以使用生成器表达式,但不能短得多。在
更正结束标记的拼写后:
使用python2.7.6和beautifulsoup4.3.2,我发现Marcelo的答案是给出一个空列表。不过,这对我很有效:
或者,对于一个可笑的过度设计的解决方案(至少对于这个特定的问题,但是如果您对条件进行过滤的时间太长而无法放入一个合理容易理解的列表表达式,则可能会有用),您可以:
^{pr2}$创建函数工厂,然后
获取对您要查找的父标记的引用
我不认为有一种方法可以一步到位。所以:
可以使用生成器表达式,但不能短得多。在
相关问题 更多 >
编程相关推荐