我正在尝试为各种网站开发一个刮刀,例如 angel.co 。但我坚持为网站www.owler.com设计抓取工具,因为当我们尝试访问有关公司的信息时,它需要通过邮件登录。每次我们登录时,我们都会在电子邮件中获得一个新的登录令牌,该令牌将在一段时间后过期。
有没有适当的解决方案来处理这种情况? 我只是在寻找处理这类情况的指导方针。已经尝试过使用selenium自动执行此任务,但它并没有很大帮助。
答案 0 :(得分:3)
我找到你的男人! 是,这可以通过Selenium来完成,但它需要一些Selenium& amp;的高级知识。基本了解用户在网站上的用户authenticated
和cookies
。
在我的脑海中,您有以下选择:
cookie
; Profile
的形式存储会话,然后将其加载到您的脚本生成的实例上。< / LI>
1。(注意:这从第一次起就像是一种魅力,所以请密切关注。)
Sign In
以便接收您的电子邮件。检查登录链接(参见 this 打印屏幕); browser console
(Chrome上的F12
或CTRL+Shift+J
)&gt;转到 Applications
标签&gt;点击 Cookies
部分(针对Owler域)并复制OWLER_PC
Cookie的值。 (有关详细信息,请参阅 this 打印屏幕)auth_token
功能以Cookie的形式添加document.cookie
,如下所示:document.cookie=OWLER_PC=<yourTokenHere>
; 注意:我知道您必须将该Cookie添加为OWLER_PC
,因为我已经检查了登录会话,这是唯一新的Cookie。 cookie的值(通常)与您通过电子邮件收到的身份验证令牌相同。
现在剩下要做的就是通过代码模拟这个。您必须在脚本中存储其中一个电子邮件身份验证令牌(注意它们将在1年后过期,因此您应该很好)。
然后,一旦打开会话,使用Selenium绑定作为您用来添加所述cookie的框架/语言,然后刷新页面。对于 WedriverIO / JavaScript (我选择的武器),它是这样的:
browser.setCookie({name: 'OWLER_PC', value: 'SPF-yNNJSXeXJ...'});
browser.refresh();
browser.refresh();
// Assert you are logged in
2. 有时候,您不想添加Cookie,或者只是登录网站编写样板代码,或者在Selenium上加载一组特定的浏览器扩展名驱动实例。因此,您使用 Browser Profiles 。
你必须记录自己,因为这是一个冗长的话题。当您使用Python Selenium绑定时, This 问题也可能对您有所帮助。
希望这有帮助!