python - 使用 Selenium 进行网页抓取时无法区分动态元素
问题描述
我正在尝试为在线调查编写一个机器人,但我被困在一个特定的页面上。
它包含一个复选框列表,只能通过 id 参数来区分,如下所示:
//*[@id="prompt_368243"]/div[2]/div/div[1]/div/div/div[1]/label/div/div
//*[@id="prompt_368241"]/div[2]/div/div[1]/div/div/div[1]/label/div/div
//*[@id="prompt_368228"]/div[2]/div/div[1]/div/div/div[1]/label/div/div
(截图链接:https ://i.stack.imgur.com/TBpI4.jpg )
检查 cs-selectors 时的情况是一样的。自问题发生以来我一直在使用的是:
choice = '//*[starts-with(@id,\'prompt\')]/div[2]/div/div[1]/div[' + str(randint(1, 3)) + ']/span'
知道每次加载调查时 id 值都在变化,有没有办法单独选择每一行?我注意到这个数字每行都在减少,但它不是一个恒定值或任何东西。这些对象没有任何标签,这也是有问题的。
解决方案
推荐阅读
- r - NA的R函数问题条件的长度> 1并且只使用第一个元素
- kotlin - 根据状态更改可组合
- python - pandas DataFrame:: 将记录值从一个数据帧的最后一行复制到另一个数据帧时显示错误
- vue.js - Vuex createPersistedState partial persist not working
- amazon-web-services - AWS SAM HttpApi - 添加 lambda auth 时出现内部服务器错误
- perl - 如何使用 perl 脚本删除重复的行
- apache - .htaccess RewriteRule 在不同的主机中不起作用
- javascript - 使用 NextJs 获取滚动条位置
- python - 在 python 中启动太多新线程最终会导致内存泄漏吗?
- javascript - ReactNative - 从 Promise (JSON) 中获取数据