这是一篇介绍爬虫框架的文章,开头没有讲剧情。有什么最新的项目,有什么新知识的分享,剧情挺好的,但是入门很初级,所以没有办法应用。不支持排队的爬虫都是流氓。所以让我给你一个例子,看看这个爬虫框架有多简单和有用。
第一步:安装爬行宠物
Nodejs不需要介绍更多,用npm安装crawl-pet
$ npm安装爬行-宠物-g -生产
运行时,程序将指导您完成配置,第一次运行,并在项目目录中生成info.json文件
$爬行宠物套装项目目录:/测试-爬行-宠物在中创建爬行-宠物。/test-crawl-pet [y/n]: y设置目标URL : http://foodshot.co/设置保存规则[url/simple/group] : URL设置文件类型限制:限制:不限制设置解析器规则模块:模块:使用默认crawl-pet。解析器这里使用的测试网站是http://foo Dshot.co/是一个分享食物图片的免费版权网站。网站的图片质量很好。它仅用于测试和学习。你可以在其他网站上测试它
如果您使用默认的解析器,您已经可以运行它了。看效果:
$ crawl-pet-o ./test-crawl-pet
尝试
这是下载后的目录结构
本地目录结构
步骤2:编写自己的解析器
现在让我们看看如何编写自己的解析器。有三种方法可以生成我们自己的解析器
创建新项目时,在“设置解析器规则”模块中输入解释器路径。最简单的方法是修改info.json下的parser项,并直接在项目记录中创建一个新的parser.js文件
使用crawl-pet创建一个新的解析器模板
$ crawl-pet - create-parser。/test-cradle-pet/parser . js
打开文件。/test-cradle-pet/parser . js。
//crawl-pet通过使用cheerio支持页面分析。如果需要,在发送请求之前会调用Const CHEERIO=REQUIRE(' CHEERIO ')/* * Header函数,您可以配置请求的头信息。如果返回false,则中断请求* *参数:*选项:有关详细设置,请参考https://github.com/request/request * crawler _ handler :带有队列的通信对象。详情请参考以下* *表头功能可选。不要写*/导出。header=function (options,crawler _ handle) {}/* *返回请求后调用body函数,用于解析返回的结果* *参数: * url:请求的url * body:请求返回的结果。字符串类型* response:请求的响应,有关详细信息,请参见:https://github.com/request/request * crawler _ handle :与队列通信的对象。此对象包含以下方法*。信息:爬行宠物配置信息*。uri :当前请求的uri信息*。添加页面(网址):向队列添加要解析的页面*。添加向下(网址)3360添加一个文件下载到队列*。save(content,ext) :将文本保存在本地,ext设置保存文件的后缀名称*。over() :结束当前队列,取出下一个队列数据*/export。body=function (URL、body、response、crawler _ handle){ const re=/b(href|src)s*=s*['']([^''#])/ig var m=null while(m=re . exec(body)){ let href=m[2]if(/。(png | gif | jpg | JPEG | MP4) b/I . test(href)){//这个原理增加了一个下载crawler _ handle . adddown(href)} else if(!/.(CSS | JS | JSON | XML | SVG)/。test (href))。最后会有一份。如果你明白,请
步骤3:检查已爬网数据
根据本地下载的文件找到下载地址
$ crawl-pet-f ./test-crawl-pet/photos . food shot . co/*。太平绅士
找到下载地址
查看等待队列
$ crawl-pet -l队列
查看等待队列
查看下载文件的列表
复制代码代码如下:美元爬行宠物羽绒服#查看已下载列表中第0 条后的5条数据$爬行宠物-l下降,0,5 # - json参数表示输出格式为json $ crawl-pet -l down,0,5 - json
已下载的文件
查看已解析页面列表,参数与查看已下载的相同
复制代码代码如下:美元爬行宠物页面
基本功能就这些了,看一下它的帮助吧
该爬虫框架是开源的,GIthub地址在这里:https://github。com/wl 879/Crawl-pet
$爬行宠物-帮助爬行宠物选项帮助: -u,- url字符串目标地址-哦-超越字符串保存目录,默认使用pwd -r,-重新启动重新加载所有页面-清除队列-保存字符串保存文件规则以下选项=url:保存与全球资源定位器(Uniform Resource Locator)一致的路径=simple:保存项目中的文件路径=group:在一个文件夹中保存500个文件-类型数组限制下载文件类型-限制数量=5并发限制-睡眠数量=200并发间隔-超时数量=180000队列超时-代理字符串设置代理-解析器字符串设置爬网规则,它是一个射流研究…文件路径!默认加载项目路径中的parser.js文件-最大尺寸数字限制下载文件的最大大小最小宽度数字限制下载文件的最小宽度-明8数字限制下载文件的最小高度-我-信息查看配置文件-l-名单数组查看队列数据例如[页/下/队列],0,-1 -f,- find数组查找本地文件的下载网址-json打印结果到JSON格式-v,-版本查看版本-h,-帮助查看帮助最后分享一个配置
$ crawl-pet-u https://www.reddit.com/r/funny/-o Reddit-保存组信息。JSON
{ ' URL ' : ' https://www。Reddit。com/r/滑稽/',' outdir': ',' save': 'group ',' types ' : ' ',' limit': '5 ',' parser': 'my_parser.js ',' sleep': '200 ',' timeout': '180000 ',' proxy ' : ' ',' maxsize ' : 0 0 0 0 ' 0,' minwidth ' :' cookie ' :以上
exports.body=function(url、body、response、crawler _ handle){ const re=/b(data-url|href|src)s*=s*['']([^''#])/ig var m=null while(m=re。exec(body)){ let href=m[2]if(/thumb | user | icon | .(CSS | JSON | js | XML | SVG) b/I . test(href)){ continue } if(/ .(png | gif | jpg | JPEG | MP4) b/I . test(href)){ crawler _ handle。add down(href)continue } if(/Reddit .com /r //I . test(href)){ crawler _ handle。addpage(href)} } crawler _ handle。over()}如果你是了解新闻网站名的,那就这样了。
开源代码库地址在这里:https://github。com/wl 879/Crawl-pet
本站下载地址:点击下载