开源爬虫框架各有哪些优缺点?

优采云 发布时间: 2020-06-27 08:00

  爬虫是一个很复杂的系统,可以从多种不同的角度进行分类,前面一些回答早已涉及了不少,我想从信息抓取和提取,手工编码和可视化,静态页面剖析和互动这三个方面再讨论一下。

  1,信息抓取和提取

  信息抓取是指怎样获得网站上的信息的过程,而信息提取是指怎样从获得的页面上辨识出自己所须要的信息的过程。使用爬虫爬取单个或则少数网站的时侯,那么主要需解决抓取问题,而目标网站数目好多的时侯,信息提取就成为主要矛盾。

  举个事例,Scrapy是一个解决信息抓取问题的软件平台。而使用Xpath或则CSS Selector可进行少量站点的信息提取,但面对*敏*感*词*信息提取Xpath就无能为力了,在这些情况下,应该使用一些机器学习算法开源爬虫软件,比如IBL(Instance based Learning),可以按照某网站的一个或则少量页面进行学习,然后快速生成该网站的辨识模型,scrapely就是这样的一个软件模块。

  2,手工编码和可视化

  我们在网路上见到的大部分教程,都是基于某种编程语言(比如Python)和软件库(比如Scrapy)进行手工编码的,这种方法的优点是十分灵活,可扩展性好,能针对特定站点给出高效的实现。但它的缺点也是显著的,就是须要爬虫开发人员懂编程语言,门槛比较高。

  为了解决这个问题,人们又提出了可视化爬虫,在定义可视化爬虫时,远程网站的页面将直观地展示下来,然后人们可以通过键盘进行点击操作,就可以定义爬取逻辑(包括爬取目标、爬取次序、爬取深度等)和抓取逻辑(页面中的哪部份内容应当被辨识为属性),和手工编码爬虫相比,可视化爬虫大大增加了爬虫定义的门槛,但是爬取效率不如手工编程的高,另外,由于可视化爬虫对爬取逻辑进行了具象,可能难以做到对于一些特殊网站的支持。

  Portia就是一个典型的可视化爬虫,人们常常觉得pyspider也是一个可视化爬虫,但似乎并不是,pyspider只是一个拥有GUI的手工编码爬虫。

  3,被动爬虫和互动爬虫

  大部分爬虫都是基于对页面进行剖析,如果须要将使用浏览器引擎对页面中的Javascript代码进行执行,然后获得渲染后的页面,再从中提取出自己所须要的信息。

  但有些情况下,我们还须要才能和这种页面进行互动,比如输入用户名和口令登录到系统中去之后再进行爬取,又例如我们须要输入关键字之后只爬取搜索结果。在这种情况下,我们须要在爬虫定义时才能将这种用户输入保存出来,然后在爬虫执行期,将这种交互信息重新回放回来,就像一个人在做这种动作一样。

  Selenium是这些爬虫的一个事例,用户用Selenium IDE录制用户动作,保存为Selenese命令序列,然后使用Web driver模仿浏览器重放这种命令。交互式爬虫的优点是可以象人一样作出各类动作,缺点是因为须要建立完整的浏览器引擎开源爬虫软件,系统开支十分大,爬取效率太低。

  最后,做一个广告,我近来开源了一个爬虫portia-dashboard, 按照上面的分类方式,这个爬虫是一个“面向多个站点的”、“主要支持信息抓取的”、“同时支持被动抓取和互动抓取” 的“可视化”爬虫,而且提供了Portia中没有的dashboard功能,使用dashboard可以布署爬虫、启动爬虫、监控爬虫状态,浏览提取的信息等等。

  使用代码安装可能有点复杂,最简单的方式是使用docker, 欢迎你们使用,并提出宝贵意见。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线