【问题标题】:How to find an element's position using XPath?如何使用 XPath 查找元素的位置?
【发布时间】:2017-08-20 11:38:33
【问题描述】:

我一直在尝试编写一个简单的脚本,以便将 200 多个链接上传到我正在工作的网站(我对 python 的了解很差,在 HTML 方面更差,当然我不是作为网络开发者,我只需要上传这些链接)。

嗯,我的情况如下:我正在使用Splinter(因此,Python)在网站中导航。本网站的某些部分标题将与我在 .csv 表中的值进行比较。

例如,在this screenshot 中,我正在寻找此链接/admin/pages/5,并且我想比较该链接的标题(Explorar subpáginas de 'MA111 - Cálculo I') 与我的.CSV 表。问题是链接的标题没有出现在网站上。

为了找到链接,我猜我应该使用 find_by_xpath(),但我不知道该怎么做。我猜它类似于this link

如果有任何帮助,我将不胜感激!我希望我已经说清楚了。

【问题讨论】:

  • 您最初对目标元素了解多少:链接引用hreftitlea 元素索引/DOM 中的位置以及您想要得到什么输出?很难理解你的问题...

标签: python xpath web-scraping splinter


【解决方案1】:

您首先需要定义如何检测该网址,例如,“它始终位于某个按钮的右侧”或“它是表格中的第二行”,这样您就可以构建相应的xpath(这是在DOM 中遵循的路径。

我不完全确定,但这可以为您提供解决方案

url = browser.find_by_xpath('//td[@class="children"]/a')[0]['href']

例如,如果您通过链接名称查找标签,请尝试以下操作:

url = browser.find_by_xpath('//a[contains(@title, "MA111 - Cálculo I")]')[0]['href']

如果您在那里检查,xpath 会显示“在整个 DOM // 中找到一个名为 a 的标签,该标签在 title 属性中包含 "MA111 - Cálculo I"

【讨论】:

  • 首先,谢谢!是的,它确实给了我一个链接,但是第一个链接(因为 [0])。我想知道的是:有没有办法让我搜索标题包含我正在寻找的一个词的链接?例如,在我发布的屏幕截图中,我想搜索“Cálculo I”。
  • 谢谢!我不得不稍微修改它,因为我没有具体说明我想要什么。 browser.find_by_xpath('//a[contains(@title, "MA111 - Cálculo I") and contains(@title, "Explorar")]')[0]['href'] 是最终版本。非常感谢我在哪里可以找到有关 xpath 语法的更多信息?我认为它在未来可能有用..
  • xpath tutorial 将是我认为的最佳来源
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-19
  • 2019-11-30
  • 2020-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多