如何为owler等公司设计刮刀?

时间:2017-05-27 04:59:15

标签: python selenium web-scraping scrapy

我正在尝试为各种网站开发一个刮刀,例如 angel.co 。但我坚持为网站www.owler.com设计抓取工具,因为当我们尝试访问有关公司的信息时,它需要通过邮件登录。每次我们登录时,我们都会在电子邮件中获得一个新的登录令牌,该令牌将在一段时间后过期。

有没有适当的解决方案来处理这种情况? 我只是在寻找处理这类情况的指导方针。已经尝试过使用selenium自动执行此任务,但它并没有很大帮助。

1 个答案:

答案 0 :(得分:3)

我找到你的男人! ,这可以通过Selenium来完成,但它需要一些Selenium& amp;的高级知识。基本了解用户在网站上的用户authenticatedcookies

在我的脑海中,您有以下选择:

  • 1。存储收到电子邮件的身份验证链接&将令牌cookie;
  • 的形式注入您的浏览器会话
  • 2。以特定于您正在运行测试的浏览器的Selenium Profile的形式存储会话,然后将其加载到您的脚本生成的实例上。< / LI>

1。注意:这从第一次起就像是一种魅力,所以请密切关注。)

  • 在隐身窗口中打开 www.owler.com (我正在使用Chrome)并打开Cookie部分;
  • 找到您正在使用的Cookie(请参阅 this 打印屏幕);
  • Sign In以便接收您的电子邮件。检查登录链接(参见 this 打印屏幕);
  • 复制&amp;将链接加载到另一个浏览器(不是您的隐身会话);
  • 登录后,打开 browser console (Chrome上的F12CTRL+Shift+J)&gt;转到 Applications 标签&gt;点击 Cookies 部分(针对Owler域)并复制OWLER_PC Cookie的值。 (有关详细信息,请参阅 this 打印屏幕)
  • 在您的匿名会话中(未登录),转到浏览器控制台并通过auth_token功能以Cookie的形式添加document.cookie,如下所示:document.cookie=OWLER_PC=<yourTokenHere> ;
  • 刷新页面 2次 VOILA ,您已登录。

注意:我知道您必须将该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 问题也可能对您有所帮助。

希望这有帮助!