Selenium,通过 Xpath 获取元素 - 仅抓取页面上的最后 60 个元素

2023-12-22

我在弄清楚如何指定页面上的最后 60 个元素时遇到了一些困难

posts = driver.find_elements_by_xpath("""(//div[@class='hotProductDetails'])""")
for post in posts:
    print(post.text)

此代码打印网页上这些元素中的每一位文本。但我正在尝试抓取一个带有“加载更多”按钮的网站。

“加载更多”按钮加载 60 多个产品,我希望我的代码只获取这些产品。这样我就可以将所有内容放在一个循环中,单击按钮,获取它加载的产品,附加到 Pandas Dataframe 并重复一定数量的迭代。

我一直无法获得为我执行此操作的代码,一旦多次按下“加载更多”按钮,抓取元素就会杀死 chrome,进而杀死我的脚本。

"(//div[@class='hotProductDetails'])[position() > {} and position() <= {}])".format ((page -1 ) * 50, page * 50)

有人与我分享了这段代码,但它因以下错误而使我崩溃:

invalid selector: Unable to locate an element with the xpath expression (//div[@class='hotProductDetails'])[position() > {} and position() <= {}])".format ((page -1 ) * 50, page * 50 because of the following error:
SyntaxError: Failed to execute 'evaluate' on 'Document': The string '(//div[@class='hotProductDetails'])[position() > {} and position() <= {}])".format ((page -1 ) * 50, page * 50' is not a valid XPath expression.
  (Session info: chrome=60.0.3112.90)
  (Driver info: chromedriver=2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8),platform=Windows NT 10.0.14393 x86_64)

这是我第一次进行网络抓取项目并使用 Selenium(这是一个令人惊叹的软件包,给它留下了深刻的印象),我不知道如何修复它。我怀疑这与“页面”代码有关,因为所有内容都位于同一个网页上,当您加载更多产品时,该网页会变得更大。

如果有帮助的话,我可以分享我正在抓取的网站 - 就像我说的,这是我的第一个抓取项目,也是我刚刚加入的一家公司的项目。我不知道我分享这件事他们是否会感到不安。


如果您得到无效的 XPATH 选择器,则说明有问题。末尾多了一个“)”。下面对我有用

page = 2

xpath_selector = "(//div[@class='hotProductDetails'])[position() > {} and position() <= {}]".format ((page -1 ) * 50, page * 50)

另外,如果您想要最后 60 个元素之类的内容,那么您甚至可以使用下面的

xpath_selector = "(//div[@class='hotProductDetails'])[position() > last() - 60]"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Selenium,通过 Xpath 获取元素 - 仅抓取页面上的最后 60 个元素 的相关文章

随机推荐

  • Heroku 计费测功机到底如何工作?

    我试图了解 Heroku 定价系统 好的 免费帐户每小时可获得 1000 dyno dyno hour 的确切含义是什么 这取决于什么 每秒请求数 用户数量 如果我想切换到非睡眠优惠 我必须为每个 dyno 支付 7 美元 那么 1000
  • 友元函数未在此范围内声明错误

    您好 我试图了解友元函数的范围 但出现 未在范围内声明 错误 这是我的代码 node h class Node public int id int a int b friend int add int int void itsMyLife
  • 在 Python 3 中使用 xlsxwriter 交替行颜色

    有人在Python3中使用xlsxwriter生成excel时实现了交替行颜色吗 data format workbook add format bg color FFC7CE worksheet write data row data c
  • vim 系统寄存器 * 和 + 不起作用

    echo has clipboard 返回 1 但每当我执行 yy or yy 那些寄存器中似乎什么也没有 如果我使用常规yy复制另一行文本 然后尝试使用从寄存器粘贴CONTROL V什么都没发生 如果我尝试 pvim 粘贴我使用常规复制的
  • Linux 的 Windows Beep() 等效项

    我正在Windows上试验Beep功能 include
  • Laravel 创建方法

    我正在尝试使用 Laravel 存储数组create method input Input all new media this gt media gt create input or input Input all new media M
  • 为输入字段注册自定义焦点事件处理程序的最佳实践

    遗憾的是 我没有找到任何焦点事件sap m Input or sap m TextArea我可以在 XML 视图中注册处理程序 您的最佳实践是什么 例如如果你有近 100 个字段并且其中大部分应该处理focus 事件 以便自动选择输入字段中
  • 转换为具有指定小数位数的小数

    有没有办法将一个数字转换为具有指定小数位数的小数 我试过 SELECT CAST NumericField AS NUMERIC 15 DecimalPlaces AS NumericField 但这没有用 EDIT 我写错了NUMBER代
  • Chrome 开发者工具 - (索引)样式表在哪里?

    我正在修改一个基于 WordPress 的网站的主题 新主题再具体一点 虽然我改变了主题选项 style css文件和custom css文件 我无法更改链接的颜色 然后我使用 Chrome 的开发者工具来检查我的规则在哪里被覆盖 最重要的
  • 如何在Web Core API中调试启动?

    我有一个使用 Web Core API 的 MVC 网站 在进行了微小的更改和部署后 我意外地收到了错误 响应状态代码不表示成功 500 内部服务器错误 所以我启用了 Web Core API 的日志文件 请参阅https learn mi
  • ASP.NET MVC 应用程序中的数据操作和业务逻辑代码应该放在哪里?

    观看了 Rob Conery 的 Kona 应用程序的示例后 我发现他在 IoC 中使用了两个东西 ISession 其中有数据层代码和服务 其中有一些我们在操作数据存储中的数据时需要执行的附加业务逻辑 例如 我们可能不仅向数据库添加一条记
  • PHP 中的简单 BBparser 可让您替换标签之外的内容

    我正在尝试解析表示源代码的字符串 如下所示 code lang html lt div gt stuff lt div gt code div stuff div 正如你从我之前的 20 个问题中看到的 我尝试使用 PHP 的正则表达式函数
  • 向 Woocommerce 3.0 添加股票期权

    我正在尝试将自定义 stock status 添加到 WordPress 中的 woocommerce 3 0 中 最终目标是在产品编辑页面上添加第三个库存选项 暂停 并在产品页面上显示该库存状态 以前我可以使用这里的方法 在 woocom
  • 由于 CPU 类型的原因,C++ Boost 多线程比单线程慢?

    我之前发布过一些boost多线程 这次我只是好奇和失望 因为我认为多线程应该比单线程更快 两个线程是 FILE I O 读取 解析 CSV 数据 当我使用多线程时 每台来自 DELL DESKTOP OPTIPLEX 745 的 PENTI
  • PHP 7.2 count() 函数不起作用

    我有一个正在运行的 php 应用程序 它在 php 7 0 版本上运行良好 但是当我将 php 版本升级到 7 2 时 我收到此错误 count Parameter must be an array or an object that im
  • 使用 Subversive 时出现 Eclipse 错误

    我正在关注此处说明 http www headfirstandroid com p guide importing projects from google html获取存储库Head First Android 我已经安装了Subvers
  • 如何在 Angular 应用程序的 Karma 测试中模拟 Firebase

    通过遵循 AngularFire 指南 我已将作用域变量与 Firebase 数组同步 我的代码与教程基本相同 第5步 https www firebase com docs web libraries angular quickstart
  • 是否可以将 git diff 等同于 go-git

    我每 10 秒拉一次存储库 并且需要检查每次拉后哪些文件发生了更改 可以用 go git 做到这一点吗 您可以使用 object Commit 补丁 https godoc org gopkg in src d go git v4 plum
  • 在图节点之间绘制线条有哪些好的算法? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Selenium,通过 Xpath 获取元素 - 仅抓取页面上的最后 60 个元素

    我在弄清楚如何指定页面上的最后 60 个元素时遇到了一些困难 posts driver find elements by xpath div class hotProductDetails for post in posts print p