如果您运行以下 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 或在线的任何地方都找不到类似的答案。如果我错过了,请原谅我。
以点开头 xpath 表达式。这将使其在元素的范围内搜索:
first_articles_a_text = articles[0].xpath('.//a')
另请参阅:
我是一名优秀的程序员,十分优秀!