背景
最近弄个数据获取的小功能,对于如何从网页来获取数据也算是有了一个初步的了解,一路也是跌跌撞撞,看过的几个方案做个小总结吧
我们浏览网页的本质其实都是获取别人的后台数据展示,当我们需要大量的数据的时候,总不能去一个个点击页面抄数据下来 吧,那么我们就可以通过代码来实现,对于绝大部分网页,页面的结构都是具有规律性的,比如淘宝网上的商品详情页这种,肯定不可能一个商品一个界面是吧,任何涉及到详情页的界面肯定都是有规律的,那么我们就可以使用代码来解析页面获取数据. (搜索引擎的爬虫就不知道了哈)
综上,按照个人理解,爬虫就是个可以替换人浏览页面,获取数据的工具,所以理论上你任何网页上你看到的感兴趣的数据都可以通过爬虫来帮你获取,类似于知乎上 “**是一种什么样的体验” 啥啥的回复,是不是分分钟一键获取,咳咳…
由于不是专业爬虫,仅仅了解了几种:
一、webmagic
webmagic采用的是完全模块化的设计, 标准OOP思想的设计方案,比较容易上手
官网文档地址:
文档讲的很详细,可以很容易就实现基础的页面爬取
优点: 文档详细,按照文档实现各个模块就可以完成一个简单版的爬虫,功能还是很强大的(支持多线程,分布式)
缺点: 不能支持对动态数据的获取
二、 selenium
实现是基于模拟浏览器的操作来实现数据获取,可以通过代码驱动浏览器的各个操作
优点: 可以动态的获取数据,你的任何操作都可以使用代码来进行模拟
缺点: 获取数据还会有个浏览器跑着是不是太浪费了,毕竟内存资源很宝贵的;没有完整的技术方案支持,去重还有一些东西是需要自己去实现的
基于相应优缺点: 感觉这个实现爬虫并不是太好,自己去实现一些模块还是多半不如使用别的开源方案的,当然这个优点就有点意思了,网页的自动化测试好像就是这个玩意儿了
ps: 可以根据配置的浏览器驱动来控制浏览器,最好玩的就是代码能够自动生成,浏览器装上插件之后可以录制自己的每一步操作,然后选择导出对应的语言代码
再补充一个: jar版本的兼容有问题, 用最新版的吧
三、 phantomjs
PhantomJS是一个基于webkit的JavaScript API。支持Dom操作、css选择器、截屏等,无界面的浏览器操作,节省内存,另外支持js脚本,功能强大。
本质上是一个无界面的浏览器,和selenium算是一个互补吧,内存换可视化,按需使用就好;
总结: 上面的各个其实都有局限性,如果结合一下应该是可以实现绝大部分的数据爬取功能,以上内容只是初步入门和几种解决方案,代码就不配了(需要的话去搜关键词)