首页 > 解决方案 > 使用 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 值都在变化,有没有办法单独选择每一行?我注意到这个数字每行都在减少,但它不是一个恒定值或任何东西。这些对象没有任何标签,这也是有问题的。

标签: pythonseleniumweb-scraping

解决方案


推荐阅读