如何通过之前的xpath搜索结果进行lxml xpath查询?

1 投票
1 回答
697 浏览
提问于 2025-04-18 18:39

如果你运行下面的Python代码,你会发现它打印出了文档中所有的标签引用,而不是只打印一个。

那么,怎么才能用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>]

注意:我在StackOverflow或者网上找不到类似的答案。如果我漏掉了什么,请多多包涵。

1 个回答

1

在写xpath表达式的时候,记得以一个点(.)开头。这样做是为了让它只在当前元素的范围内进行搜索:

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

另外,你可以看看:

撰写回答