如果您运行以下Python代码,您会注意到它在整个文档中打印所有标记引用,而它只应打印1。
如何首先使用xpath搜索文章标签,然后搜索其中的链接?
from lxml import html
source = '''
<body>
<a href='www.google.com'>outside 1</a>
<article class='art'>
<a href='www.google.com'>inside 1</a>
</article>
<article class='art'>
<a href='www.google.com'>inside 2</a>
</article>
<a href='www.google.com'>outside 2</a>
</body>
'''
tree_html = html.fromstring(source)
articles = tree_html.xpath('//article')
first_articles_a_text = articles[0].xpath('//a')
print first_articles_a_text
输出:
[<Element a at 0x47b05e8>, <Element a at 0x47b0598>, <Element a at 0x47b07c8>, <Element a at 0x47b0818>]
注意:我无法在SO或网上找到类似的答案。如果我错过了,请原谅我。
答案 0 :(得分:1)
用点开始你的xpath表达式。这将使其在元素范围内进行搜索:
first_articles_a_text = articles[0].xpath('.//a')
另见: