【发布时间】:2021-10-07 06:57:11
【问题描述】:
我正在尝试使用 Selenium 和 Python 从这个 site 中抓取一些产品评论,但它连接了另一个 site 并在任何时候随机显示一个弹出窗口,我需要按住按钮进行人工验证。
我正在使用 chrome 网络驱动程序并尝试解决它,使用driver.find_element_by_xpath 和许多其他方式获取路径。我还发现“按住”按钮位于 iframe 内,因此尝试通过 driver.switch_to_frame('//iframe') 或 driver.switch_to_frame(0) 切换到 iframe,但我失败了。我找不到任何 iframe 名称或 ID 来执行任何操作。
是否有任何方法可以绕过或采取措施(按住按钮)无论何时发生(作为站点或弹出窗口)并在此过程中使用 selenium 和 python 关闭其他弹出窗口? 任何建议将不胜感激!
【问题讨论】:
-
@CodingOtaku 不,不一样
-
如您所见,这与谷歌验证码不同,您可能需要选择一些汽车照片或单击复选框以验证为人类,这完全不同,这里需要按住项目/按钮,其中按钮位于 iframe 内,其中 iframe 没有任何 ID 或名称可识别。和谷歌验证码完全不一样,希望你能理解。
-
您可以使用
browser.switch_to_window(browser.window_handles[index_of_window])切换到弹出窗口。如果没有明显的方法来获取 IFrame,则找到它的 xpath 以切换到它。 “在任何时候随机弹出”这很烦人,所以你必须不断检查它的存在。但正如我之前所说,即使您绕过 CAPTCHA,他们也会很快改变其行为以破坏所有爬虫。 -
大多数情况下,它连接网站以验证按钮位置是否相同。但我找不到它的 xpath 或 iframe id。可能有一些与此 iframe 相关的 JavaScript 代码。至少我需要找到它(如中心所示)并按住它。我可以处理其他弹出窗口,但主要是这个是造成问题的。随机是指这个验证站点是随机出现的,我们可以通过匹配当前的url来检测它,但是如何找到那个按钮来按下它!不知道!
-
据我所知,
<div id="px-captcha">下有 10 个 iframe。我相信他们只是随机选择一帧并隐藏其余帧。显示 CAPTCH 的那个在内联样式中有display:block。这有帮助吗?
标签: javascript python-3.x selenium xpath iframe