如何执行lxml xpath搜索以前的xpath搜索结果?

时间:2014-08-27 01:00:46

标签: python xml xpath lxml

如果您运行以下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或网上找到类似的答案。如果我错过了,请原谅我。

1 个答案:

答案 0 :(得分:1)

用点开始你的xpath表达式。这将使其在元素范围内进行搜索:

first_articles_a_text = articles[0].xpath('.//a')

另见: