aka*_*edi 1 python selenium scrapy web-scraping
我正在尝试为诸如angel.co 之类的各种网站开发一个抓取工具。我一直在为www.owler.com网站设计爬虫,因为当我们尝试访问有关公司的信息时,它需要通过邮件登录。
每次我们登录时,我们都会在电子邮件中获得一个新的登录令牌,该令牌将在一段时间后过期。那么,是否有任何适当的解决方案可以使用带有 Py 绑定的 Selenium 在浏览器会话中保留登录会话?
我只是在寻找处理此类情况的指南。已经尝试使用 Selenium 自动执行此任务,但这不是一种富有成效的方法。
我抓到你了!是的,这可以通过 Selenium 完成,但这需要一些 Selenium 的高级知识以及对用户如何访问authenticated网站的基本了解cookies。
在我的脑海中,您有以下选择:
cookie;Profile特定于您正在运行测试的浏览器的 Selenium 形式存储您的会话,然后将其加载到由您的脚本生成的实例上。1. (注意:这从第一次开始就很有魅力,所以请密切关注。)
Sign In以便接收您的电子邮件。检查登录链接(请参阅此打印屏幕);browser console( F12,或CTRL+Shift+J在 Chrome 上) > 转到Applications选项卡 > 单击Cookies部分(对于 Owler 域)并复制OWLER_PCcookie的值。(有关更多详细信息,请参阅此打印屏幕)auth_token一个cookie的形式,通过document.cookie功能,像这样:document.cookie=OWLER_PC=<yourTokenHere>;注意:我知道您必须将该 cookie 添加为OWLER_PC,因为我已经检查了登录会话,这是唯一一个新的 cookie。cookie 的值(通常)与您通过电子邮件收到的身份验证令牌相同。
现在剩下要做的就是通过代码模拟这一点。您必须在脚本中存储这些电子邮件身份验证令牌之一(请注意,它们会在 1 年后过期,所以您应该没问题)。
然后一旦你打开你的会话,使用你用来添加所述 cookie 的框架/语言的 Selenium 绑定,然后刷新页面。对于WedriverIO / JavaScript(我选择的武器),它是这样的:
browser.setCookie({name: 'OWLER_PC', value: 'SPF-yNNJSXeXJ...'});
browser.refresh();
browser.refresh();
// Assert you are logged in
Run Code Online (Sandbox Code Playgroud)
2.有时,您不想添加 cookie,或者编写样板代码来登录网站,或者在 Selenium 驱动程序实例上加载一组特定的浏览器扩展。所以你使用浏览器配置文件。
你必须记录自己,因为这是一个冗长的话题。当您使用 Python Selenium 绑定时,这个问题也可能对您有所帮助。
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
1405 次 |
| 最近记录: |