如何写一个简单的爬虫程序:SuperAgent VS Selenium

以前研究模拟登录的时候用superagent搞过一点,权当教务处的API,这次准备用Selenium做全套,主要还是实验室一直在吹Selenium怎么怎么好用,解决了多少多少难题,实际上!并没有!

这篇文章默默的来分析一下一些遇到的问题以及为什么我得出了以上的结论。

首先我们来考虑爬虫的两类情况,一种是大规模爬虫,那差不多就是蜘蛛,相当于每个网站都要爬,却没有特定的数据需求,这种时候很明显效率要高,速度要快,Selenium和直接取HTTP的方法差了一个浏览器打开+首屏渲染的时间。在这种情况下,通常我们是不用关心深爬情况的,只需要表层GET到的页面即可,用Selenium的需求就相对而言比较小,当然,这一情况下,首屏加载如果是客户端渲染的,那似乎就蜜汁尴尬,但是听说Google有魔改内核!(我相信应该比PhantomJS快了不少)

当然,大多数情况下,我们所要爬的数据都不是前者(所以以上就是口胡的)。而是特定领域我们有特定需求的情况下去一些同类网站去获取数据再进行处理,这种情况下,同类网站基本上是具体的网站列表,考虑到现行技术水平,基本上还是用规则去获取,同样是针对特定网站的规则,似乎两者就没有太大的差别了,但是实际上,在一些不需要模拟登录或者模拟登录没有前端加密的场合以及一些特定反爬手段的网站而言,Selenium都处于劣势,特别是如果有Canvas的图表的情况下,Selenium一点办法都没有!不然我觉得还可以抢救一下。

比如我要解决单点登录的问题,在上一个直接用HTTP的模拟登录中,我们只要设置好Header并且访问就行了,但是在Selenium中,由于我们不能直接跨域设置,不得不间接设置。

更让我哭笑不得的是,本来只要一个请求的东西,因为Selenium的模拟人工操作,我不得不多写好多动作,从某种意义上来说,反而更加不便,而且异步的Ajax填充数据我不知道什么时候加载完!虽然有个动作可以监听是否产生指定DOM,但有一定局限性,特定需求下并不是很好用,不得不阻塞操作去等待,更加增加了时间开销。虽然我本身对时间开销没有太大需求,但这一来二去的,我再也忍不了了!本来就慢!现在更慢了!操作还更复杂!

当然不是说Selenium做爬虫完全没有可取之处,是在某些情况下它实在不合适,根本没有非要用的理由,不要总想着搞个大新闻觉得这样就秒天秒地了,目前接触下来它和传统爬虫适用的场景完全不一样,根本不具有可替换的价值,并且搞得我挖的坑都没心情填了!

内容出处:,

声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.com/procedure/693.html

发表评论

登录后才能评论

评论列表(1条)

  • bidu
    bidu 2016-09-23 12:38

    这种深奥的东西岂是屁民能领悟得透的