【发布时间】:2011-11-26 16:09:24
【问题描述】:
我想为<div id="nav">内的标签找到所有标签除了的无HTML内容
例如,使用以下 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_nav"),但它会进入内部。 请帮忙!!
【问题讨论】:
标签: python screen-scraping beautifulsoup