站外数据抓取的4种方式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
站外数据抓取的4种方式
项目需求中经常会有抓取站外资源的相关需求,经过自己尝试及向各位咨询了解后,做的过程中尝试了几种不同的方式,大概总结有以下几种方式:
1.phantomjs
Phantom JS是一个服务器端的JavaScript API的WebKit。Phantomjs功能十分强大,可以模拟用户行为,自动打开目标页面,支持动态引入js框架。
优点:对抓取网页数据而言,非常方便,因为可以直接操作页面中的dom元素,通过对dom的操作取得目标数据。
缺点:phantomjs打开页面时,和浏览器正常打开情况一样,会加载页面中引用的所有外部资源并渲染执行,所以速度会相对较慢,对于抓取小量的数据还好,如果是大量的数据,速度是瓶颈。
2.Nodejs配合cheerio模块
直接利用nodejs相对于基于nodejs的phantomjs来说轻量,虽然功能没有phantomjs 强大,请求速度非常快,直接利用nodejs的http模块。
cheerio模块提供了类似于jquery操作dom的API,配合nodejs的http模块,将请求获得的网页源码转化为dom树,也是直接通过操作dom获取目标数据。
由于nodejs只是发起一个get请求,不会渲染执行外部资源,抓取速度相对phantomjs 要快很多。示例如下:
3.Php file_get_contents()方法
Php file_get_contents()用于抓取网页内容使用比较多的一种方式,直接获取获取页面的源码,抓取速度的第二种方式差不多,但是由于php不如js那样可以方便的操作页面中的dom元素,获取目标数据时采用正则匹配,稍微繁琐。
4.百度云平台已有的服务
百度云平台已经提供了一套抓取数据的服务,返回的是目标页面格式化后的数据,直接执行脚本就行:
执行返回的是json格式的结构化数据,从返回的数据是取得目标数据。
后续如有抓取数据相关需求,可以根据实际情况选择方案。