文章在线采集器(文章在线采集器:官方的源码地址为:laravelresources这个项目的思路)
优采云 发布时间: 2021-11-03 07:05文章在线采集器(文章在线采集器:官方的源码地址为:laravelresources这个项目的思路)
文章在线采集器基本采集功能上已经可以满足99%的需求,但是最令人心痒的是高并发大流量采集需求。而laravel则是这个高并发需求的绝佳解决方案。为什么是laravel?抛开模块化的laravel做开发的原因不谈,当时我就是看了《laravel实战》一书,并且很喜欢作者写的采集器,于是我决定尝试一下java采集器,并且用laravel编写一个。
现在laravel的4.x已经非常成熟了,我写的采集器也已经迭代了3次版本,包括变量权限提取、动态绑定、项目模块化等新特性。laravel的django的采集器则是最新的laravel5.x中有的。这里本文只用laravel5.x版本。首先来看一下整个项目的采集器框架,template为静态页面。官方给出这个项目的特性图:这是我写采集器的原型了,那么这个静态页面怎么采集呢?官方给出了一个页面,如下图。
来看看里面的动态地址、url、header、cookie等等都怎么采集的。思考下,作者本人说的是给出的这个页面已经是静态的页面,我们仅仅通过将页面更新为我们想要的版本,则可以采集到所有的页面。接下来开始入手写这个采集器:官方的源码地址为:laravelresources这个项目的思路大致是从cnzz和,进行数据提取:laravelresources项目给出了http请求、get请求、post请求、put请求及dom操作方法,其中get请求和post请求中都用到了header。
header其实就是accept-language。理论上template提供的这个接口已经包含了大部分header,但是官方还说了form表单等非标准的请求方法也需要支持,这样这个项目的接口其实有超过100个地方有缺失和不完善的地方,我们通过对接口调整即可满足99%的请求需求。具体这个项目提供的请求流程是:输入接口参数->获取请求的数据->返回数据到服务器->参数校验->接口重定向->返回请求结果。
对于接口结果返回,官方说的是数据交给laraveldjango系统来处理。对于官方提供的这个接口中没有做读取cookie、调整请求参数等操作,我这里是一个特例。因为laravel提供的ssl验证、jsonp支持等功能本地请求是很麻烦的,而laravel提供的特性django中没有,对django无效。
另外作者给出的地址是这个不是我编写的laravel采集器,下面是我写的采集器的源码。使用django项目地址:laravelresources本文除了采集器部分,其他的代码都写在我的github上面,然后放在服务器上去请求请求。laravel采集器地址:laravel采集器目前内置了session、jsonp和get请求等方法,但是这些在本地是不存在的,需要第三方库支持,这里我就不写了。官方接口地址:,同步更新效果,采集效果如下:这。