我使用 Selenium 和 Python 来与网络交互。是否可以以某种方式启动浏览器,然后暂停程序一段时间,比如 2 分钟,然后让其余代码运行。主要原因是在抓取数据时解决验证码。
论坛上有一些建议,例如
这些都不起作用。我做的另一件事是首先在谷歌(我的例子是亚马逊)上搜索该网站,获取第一个链接,然后单击它。然而,即使在 Selenium 中执行此操作也需要验证码,但当我手动执行此操作时不会显示任何验证码。
最后,使用 cookie 可能看起来会起作用,但如果我已经获得了验证码怎么办?由于验证码,我无法访问实际网站,也无法获取 cookie。当我手动使用浏览器时,我没有收到任何验证码。另外,我认为谷歌将来会想出更智能的方法来检测机器人。
如果可能的话,暂停代码一段时间以进行人机交互,然后恢复似乎是唯一的最佳选择。
不幸的是,没有直接的方法来暂停 Selenium 脚本的执行并手动与其交互。 Selenium 旨在自动化浏览器交互,并且不支持用户在脚本中间进行干预。
但是,您可以尝试使用一些解决方法来处理验证码:
recaptcha = ReCaptcha() 响应 = recaptcha.submit('你的密钥', '你的 gmail')
使用代理服务: 有多种代理服务可以帮助您绕过验证码。这些服务通过模拟人类行为并代表您解决验证码来工作。一些流行的服务有 2Captcha、DeathByCaptcha 等。您可以将这些服务集成到您的脚本中,以便在出现验证码时暂停执行,并在验证码解决后恢复执行。
机器学习方法:您还可以尝试训练机器学习模型来解决验证码。这种方法可能并不完美,但在大多数情况下可以帮助您避免验证码。
请记住,在抓取数据时尊重网站的条款和条件至关重要。如果网站使用验证码来防止自动抓取,最好遵守这些限制。