如何通过之前的xpath搜索结果进行lxml xpath查询?
如果你运行下面的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')
另外,你可以看看: