Python:在本地/在特定元素上使用xpath

发布于 2021-01-29 18:30:03

我正在尝试从具有xpath的页面获取链接。问题是我只希望表内的链接,但是如果我在整个页面上应用xpath表达式,则会捕获不需要的链接。

例如:

tree = lxml.html.parse(some_response)
links = tree.xpath("//a[contains(@href, 'http://www.example.com/filter/')]")

问题是将表达式应用于整个文档。我找到了想要的元素,例如:

tree = lxml.html.parse(some_response)
root = tree.getroot()
table = root[1][5] #for example
links = table.xpath("//a[contains(@href, 'http://www.example.com/filter/')]")

但这似乎也在整个文档中执行查询,因为我仍在捕获表外的链接。该页面说:“在元素上使用xpath()时,将根据元素(如果是相对的)或根树(如果是绝对的)来评估XPath表达式:”。因此,我使用的是一个绝对表达式,我需要使其相对吗?是吗

基本上,我该如何仅过滤该表内部存在的元素?

关注者
0
被浏览
52
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您的xpath以斜杠(/)开头,因此是绝对的。.在前面添加一个点(),使其相对于当前元素,即

    links = table.xpath(".//a[contains(@href, 'http://www.example.com/filter/')]")
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看