手机版

node.js基于再见的爬虫工具的实现(需要登录权限的爬虫工具)

时间:2021-08-26 来源:互联网 编辑:宝哥软件园 浏览:

公司有过一个需求,需要拿一个网页的的表格数据,数据量达到30w左右;为了提高工作效率。

结合自身经验和网上资料。写了一套符合自己需求的开发爬虫工具。也许也会适合你的。

先上代码。在做讲解

使用"严格";//引入模块const super agent=require(' super agent ');const cherio=require(' cherio ');const Excel=require(' exceljs ');var base URL=var Cookies=' PHPSESID=1c 948 cafb 361 CB 5 DCE 87122846 e 649 CD ';//伪装的cookielet页面数据=[];让计数=1;让极限=3;for(count;计数极限;count){ baseURl=` http://bxjd。heno。com/policy/policy list?page=$ { count } `;加载页面(BaseURl);}函数load page(baseURl){ GetPageLoad(baseURl);}异步函数getpage load(BaseURl){ try { let body=wait super agent。get(BaseURl).set('Cookie ',Cookies)var $=cheerio。负载(车身。文本);var trList=$('#tableList ').儿童(' tr ');for(var I=0;I trlist . lengthi){ let item={ };var tdArr=trList.eq(i).查找(' TD ');var id=tdArr.eq(0).text();item . sortid=id var Detail URl=` http://bxjd。heno。com/policy/view?id=$ { id } `;item.policyId=tdArr.eq(1).text();项目。策略产品名称=tdarr。方程式(2 ).text();item.policyName=tdArr.eq(3).text();item.policyMoney=tdArr.eq(4).text();让Detail BOdy=等待超级代理。获取(详细URl).set('Cookie ',Cookies);var $ $=cheerio。荷载(详图体。文本);var detailT=$$(' .表-视图');//投保人证件号项目。策略idnum=detailt。查找(' tr ').等式(11)。查找(' td ').等式(1)。text();//投保人手机号项目。策略电话=detailt。查找(' tr ').等式(10)。查找(' td ').等式(1)。text();//被保人手机号项目。bepoliciedphone=detailt。查找(' tr ').等式(16)。查找(' td ').等式(1)。text();//被保人姓名项目。bepoliciedname=Detailt。查找(' tr ').等式(13)。查找(' td ').等式(1)。text();控制台。日志(项目。bepoliciedname)//被保人证件号项目。bepolicieddinum=Detailt。查找(' tr ').等式(17)。查找(' td ').等式(1)。text();页面数据=[.页面数据,项目];} if(页面数据。length/15==(count-1)){写入xls(页面数据)} } catch(错误){ } }函数写入xls(页面数据){常量工作簿=新Excel .工作簿();const Sheet=工作簿。'添加工作表('我的工作表');const reColumns=[ {header: '序号,key:'sortId'},header: '投保单号,key:'policyId'},header: '产品名称,key: 'policyProductName'},header: '投保人姓名,key: 'policyName' },header: '投保人手机号,key: 'policyPhone' },header: '投保人证件号,key: 'policyIdNum'},header: '被保人姓名,key: 'bePoliciedName' },{header: '被保人手机号,key: 'bePoliciedPhone' },{header: '被保人证件号,key: ' bePoliciedIdNum ' },{header: '保费,key:'policyMoney'},];sheet.columns=重新着色列;用于(让页面数据的trData){ sheet。addrow(TrDATa);} const文件名='。/项目。xlsx ';workbook.xlsx.writeFile(文件名)。然后(函数(){控制台。日志(' ok ');}).捕捉(函数)(错误){ console.error(错误);});}代码使用方式

一、国家预防机制安装相关的依赖二、代码修改

1、修改为自己的基础地址

2、如果不需要携带甜饼干时将设置(“Cookie”,Cookie)代码去掉

3、修改自己的业务代码

三、运行节点索引四、部分代码说明

所有代码不过90行不到,操作了表格数据获取和单条数据详情的获取

接口请求的框架使用超级试剂的原因是拼接伪装的甜饼干的操作比较简单。因为有的时候我们需要获取登录后的页面数据。

此时,请求可能需要携带登录cookie信息。返回的body对象可以在通过cheerio.load后获得一个类似jquery的文档对象

稍后,您可以轻松地使用jquery的dom操作模式在页面中获取您想要的数据。

将数据写入excel。

动词(verb的缩写)结果

摘要

版权声明:node.js基于再见的爬虫工具的实现(需要登录权限的爬虫工具)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。