当前位置: 首页 > 面试题库 >

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

融建树
2023-03-14
问题内容

我正在尝试从具有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表达式:”。因此,我使用的是一个绝对表达式,我需要使其相对吗?是吗

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


问题答案:

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

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


 类似资料:
  • 问题内容: jQuery中是否有一种方法可以选择位于特定位置的元素? 例如,我可以选择绝对位置位于left:100和top:300的元素吗? 如果可以选择一个位置范围内的元素,那就太好了,例如,选择位于左侧的元素:100-150 px顶部200-280 px。 问题答案: 您正在寻找JavaScript / DOM方法。 返回一个,当然可以将其包装到jQuery对象中: 我不太了解跨浏览器的兼容性

  • 问题内容: 我有以下HTML结构: 我只想选择之前的内容。我怎样才能做到这一点?在我的内容中,越来越多的东西,因此解决方案应该是通用的。 问题答案: 据我所知,CSS没有提供将 在* 选择器 之前定位的任何选择器。您能否将其选择为()之后的? * 如您所见,这可能是您依赖CSS时可以使用的最佳选择器,尽管您可以轻松地向之前的每个类添加一个类。这样可以避免您在另一个段落和段落节之前有一个段落节的情况

  • 我试图使用Appium 1.6在iOS 10上的某个特定元素上向左滑动,以显示删除按钮。 触摸操作和向左滑动的滑动代码在appium 1.4中运行良好,但问题是在我们迁移到appium 1.6之后才出现的。 非常感谢您的帮助

  • 我有一个html如下所示 如您所见,在父div下有四个子div,它包含类;第三个子div包含一个额外的类。我想在包含类的子项之前选择所有子项。注任何子级都可以包含类,并且在任何情况下,我都希望所有子级位于它之前。 这就是我所做的 但在本例中它也选择最后一个子项。在使用JavaScript选择类之前,我如何确保只有子类? 我在stackoverflow中发现了一个类似的问题:在element wit

  • 我试图用Selenium测试一个复杂的JavaScript接口(使用Python接口,跨多个浏览器)。我有多个表单按钮: 我希望能够搜索基于“我的按钮”(或不区分大小写,部分匹配,如“我的按钮”或“按钮”)的按钮。 我发现这是非常困难的,以至于我觉得我错过了一些明显的东西。到目前为止我所拥有的最好的东西是: 但是,这是区分大小写的。我尝试的另一件事是遍历页面上的所有div,并检查Element.T