【问题标题】:Use selenium to get information out a table with changing xpaths使用 selenium 通过更改 xpaths 从表中获取信息
【发布时间】:2021-02-21 01:49:19
【问题描述】:

我正在尝试遍历公司列表,并从 CSRhub 获取他们的环境评级。我会发布链接作为示例,但它只能通过登录。我的爬虫没有得到准确的数字,因为评分的位置会根据网页上表格的行而变化。

例如: 在这里,我们看到 Target 在表中有 5 行,73(能源和气候变化评级)的 xpath 是:

//[@id="rating-section"]/div/div2/div/div/table/tbody/tr[23]/td[5]/div/ table/tbody/tr/td2/div/div/span1/span*




但公司的行数各不相同,这里是我试图收集的不同元素的 xpath。




表格和网页功能没有 id 或标记良好的类。我对理解前端还很陌生。 无论公司有多少行,我如何才能选择正确的功能?

【问题讨论】:

  • 如果页面有table元素,为什么不使用pandas获取整个表格?
  • 你能把你要抓取的页面的网址固定下来吗

标签: python xml selenium


【解决方案1】:

由于您不能依赖行编号,请确定您可以依赖的内容——在本例中是您要查找的值的文本标签。使用 xpath contains() 方法检查文本。我无法阅读您屏幕截图中的 HTML,因此很难给出确切的代码,但它看起来像这样:

如果元素是<span class="something useless">I am a label!</span>

使用"//*[@id='rating section']//table//span[contains(text(),'I am a label')]"

顺便说一句,一个方便的技巧是在有很多非特定代码的任何地方使用“//”,因此您不需要在 xpath 中包含所有 /div/span/div 杂物。

还要看看使用子节点和父节点。在您想要的元素附近识别出一个高度静态的元素,然后使用子节点表达式(如果需要,还可以使用额外的 xpath)来获取所需的元素。

刚开始时 Xpath 令人望而生畏,但我鼓励您继续尝试和学习。在这种情况下它真的很强大。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2011-02-20
    • 2014-06-14
    • 1970-01-01
    相关资源
    最近更新 更多