我想找到所有标签的HTML自由内容,除了<div id="nav">
内标签的
例如,使用以下HTML:
<div id="nav">
<h1>Navigate!</h1>
<nav role="navigation">
<h2 class="structural">Main navigation</h2>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/about/">About</a></li>
</ul>
</nav>
<div id="inside_nav">
<ul>
<li><a href="/">inside_home</a></li>
<li><a href="/about/">inside_About</a></li>
</ul>
</div>
</div>
代码:
div = soup1.find("div", id="nav")
def match_only_non_divs(tag):
return (tag.findParent("div").get('id') == div.get('id')) and tag.name != "div"
print div.findAll(match_only_non_divs, text=True)
此代码应输出:
[u'\n', u'Navigate!', u'Main navigation',
u'Home', u'About', u'\n']
但是!它实际上输出:
[u'\n', u'Navigate!', u'Main navigation',
u'Home', u'About', u'\n',
u'inside_home', u'inside_About', u'\n']
代码不应该走在内部div(id=“inside\u nav”)的内部,但它应该走在内部div的内部。 请帮忙!!你知道吗
至于问题的原因,下面是doc对
text
关键字的看法:所以,
findAll
基本上忽略了div.findAll(match_only_non_divs, text=True)
中的match_only_non_divs
。你应该在匹配之后得到文本(正如johnkeyes所建议的)。你知道吗您有两种选择:
相关问题 更多 >
编程相关推荐