返回顶部
首页 > 资讯 > 前端开发 > JavaScript >如何实现node.js基于cheerio的爬虫工具
  • 270
分享到

如何实现node.js基于cheerio的爬虫工具

2024-04-02 19:04:59 270人浏览 泡泡鱼
摘要

这篇文章主要介绍如何实现node.js基于cheerio的爬虫工具,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!先上代码'use strict'; //&n

这篇文章主要介绍如何实现node.js基于cheerio爬虫工具,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

先上代码

'use strict';
// 引入模块
const superagent = require('superagent');
const cheerio = require('cheerio');
const excel = require('exceljs');
var baseUrl = '';
var Cookies = 'PHPSESSID=1c948cafb361cb5dce87122846e649cd'; //伪装的cookie
let pageDatas = [];
let count = 1;
let limit = 3;
for (count; count < limit; count++) { 
  baseUrl = `Http://bxjd.henoo.com/policy/policyList?page=${count}`;
  loadPage(baseUrl); 
}
function loadPage(baseUrl) { 
   getPageLoad(baseUrl);
} 
async function getPageLoad(baseUrl) {
  try {
    let body = await superagent.get(baseUrl)
      .set("Cookie", Cookies)
    var $ = cheerio.load(body.text);
    var trList = $("#tableList").children("tr");  
      for (var i = 0; i < trList.length; i++) { 
        let item = {};
        var tdArr = trList.eq(i).find("td");
        var id = tdArr.eq(0).text();
        item.sortId = id;
        var detailUrl = `http://bxjd.henoo.com/policy/view?id=${id}`;
        item.policyId = tdArr.eq(1).text();
        item.policyProductName = tdArr.eq(2).text();
        item.policyName = tdArr.eq(3).text();
        item.policyMoney = tdArr.eq(4).text();
        let detailBody = await superagent.get(detailUrl)
          .set("Cookie", Cookies);
        var $$ = cheerio.load(detailBody.text);
        var detailT = $$(".table-view");     
        //投保人证件号
        item.policyIdNum = detailT.find("tr").eq(11).find("td").eq(1).text();
        //投保人手机号
        item.policyPhone = detailT.find("tr").eq(10).find("td").eq(1).text();
        //被保人手机号
        item.bePoliciedPhone = detailT.find("tr").eq(16).find("td").eq(1).text();      
        //被保人姓名
        item.bePoliciedName = detailT.find("tr").eq(13).find("td").eq(1).text();
        console.log(item.bePoliciedName)
        //被保人证件号
        item.bePoliciedIdNum = detailT.find("tr").eq(17).find("td").eq(1).text();
        pageDatas = [...pageDatas,item];
      }
    if (pageDatas.length / 15 == (count - 1)) { 
      writeXLS(pageDatas)
    }
  } catch (error) {
  }
}
function writeXLS(pageDatas) {
  const workbook = new Excel.Workbook();
  const sheet = workbook.addWorksheet('My 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 = reColumns;
  for(let trData of pageDatas){
    sheet.addRow(trData);
  }
  const filename = './projects.xlsx';
  workbook.xlsx.writeFile(filename)
  .then(function() {
   console.log('ok');
  }).catch(function (error) { 
     console.error(error); 
  });
 }

代码使用方式

一、npm install 相关的依赖二、代码修改

1、修改为自己的baseUrl

2、如果不需要携带cookie时将set("Cookie", Cookies)代码去掉

3、修改自己的业务代码

三、运行 node index四、部分代码说明

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

如何实现node.js基于cheerio的爬虫工具

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

这个时候可能需要请求是携带登录cookie信息。返回后的body对象通过cheerio.load之后就能拿到一个类似Jquery的文档对象。

后面就可以很方便的使用jquery的dom操作方式去拿到页面内自己想要的数据了。

如何实现node.js基于cheerio的爬虫工具

数据写入到excel中。

五、结果

如何实现node.js基于cheerio的爬虫工具

如何实现node.js基于cheerio的爬虫工具

以上是“如何实现node.js基于cheerio的爬虫工具”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网JavaScript频道!

--结束END--

本文标题: 如何实现node.js基于cheerio的爬虫工具

本文链接: https://lsjlt.com/news/77055.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何实现node.js基于cheerio的爬虫工具
    这篇文章主要介绍如何实现node.js基于cheerio的爬虫工具,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!先上代码'use strict'; //&n...
    99+
    2024-04-02
  • 基于node.js如何制作简单爬虫
    这篇文章主要为大家展示了“基于node.js如何制作简单爬虫”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“基于node.js如何制作简单爬虫”这篇文章吧。目标:...
    99+
    2024-04-02
  • node.js基础模块http、网页分析工具cherrio实现爬虫
    一、前言 说是爬虫初探,其实并没有用到爬虫相关第三方类库,主要用了node.js基础模块http、网页分析工具cherrio。 使用http直接获取url路径对应网页资源,然后使用cherrio...
    99+
    2022-06-04
    爬虫 模块 网页
  • 基于Python3制作一个带GUI界面的小说爬虫工具
    目录效果图开发完成后的界面采集过程界面采集后存储主要功能用到的第三方模块打包为 exe 命令全部源码效果图 最近帮朋友写个简单爬虫,顺便整理了下,搞成了一个带GUI界面的小说爬虫工具...
    99+
    2024-04-02
  • 基于hadoop的分布式爬虫怎么实现
    要实现基于Hadoop的分布式爬虫,可以按照以下步骤进行: 设计架构:首先需要设计分布式爬虫的架构,确定集群中各个节点的角色和任...
    99+
    2024-03-06
    hadoop
  • 如何实现爬虫
    这篇文章主要为大家展示了“如何实现爬虫”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何实现爬虫”这篇文章吧。第一步要确定爬取页面的链接由于我们通常爬取的内容不止一页,所以要注意看看翻页、关键字...
    99+
    2023-06-02
  • golang如何实现爬虫
    作为当前互联网时代最热门的编程语言之一,Golang在爬虫领域也拥有着不俗的表现。那么,本文就来介绍一下,如何利用Golang语言来实现一个高效的爬虫程序。一、爬虫的概念爬虫,又称网络爬虫、网络蜘蛛、网络机器人等,是一种模拟人类在网络上对网...
    99+
    2023-05-15
  • 基于Java如何实现进制转换工具类
    这篇文章主要介绍了基于Java如何实现进制转换工具类的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇基于Java如何实现进制转换工具类文章都会有所收获,下面我们一起来看看吧。背景最近有个发送短信的功能,需要在短信...
    99+
    2023-07-05
  • 基于Python如何实现视频去重小工具
    这篇文章主要介绍“基于Python如何实现视频去重小工具”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“基于Python如何实现视频去重小工具”文章能帮助大家解决问题。同级目录下新建dup_video...
    99+
    2023-07-05
  • 基于Python实现对比Exce的工具
    目录1.参数2.效果3.实现目的:设计一个应用GUI用于对比两个Excel文件 思路 1.参数 同一个excel文件两个sheet页其中一个ODS(老数据),一个DWH(新数据)生成...
    99+
    2024-04-02
  • 基于Node.js如何实现WebSocket通信
    这篇文章将为大家详细讲解有关基于Node.js如何实现WebSocket通信,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。node的依赖包node中实现Websocket...
    99+
    2024-04-02
  • 基于Python如何实现抢注大词的提词工具
    本篇内容主要讲解“基于Python如何实现抢注大词的提词工具”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“基于Python如何实现抢注大词的提词工具”吧!假设通过爬虫获得了一个自媒体.txt想要...
    99+
    2023-07-05
  • 基于Python实现倒计时工具
    基于Python编写的倒计时工具,供大家参考,具体内容如下 特点: 实时显示当前时间自动判断用户输入日期,计算当前日期与目标日期相差大概多少年、月、日以及准确的相差天数 运行窗口 运...
    99+
    2024-04-02
  • node.js实现博客小爬虫的实例代码
    前言 爬虫,是一种自动获取网页内容的程序。是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上就是针对爬虫而做出的优化。 这篇文章介绍的是利用node.js实现博客小爬虫,核心的注释我都标注好了,可以自行理...
    99+
    2022-06-04
    爬虫 实例 代码
  • 基于python实现垂直爬虫系统的方法详解
    html_downloader from urllib import request def download(url): if url is None: r...
    99+
    2024-04-02
  • 基于nodejs 的多页面爬虫实例代码
    前言 前端时间再回顾了一下node.js,于是顺势做了一个爬虫来加深自己对node的理解。 主要用的到是request,cheerio,async三个模块 request 用于请求地址和快速下载图片...
    99+
    2022-06-04
    爬虫 实例 多页
  • python 基于aiohttp的异步爬虫实战详解
    目录引言aiohttp是什么requests和aiohttp区别安装aiohttpaiohttp使用介绍基本实例URL参数设置请求类型响应的几个方法超时设置并发限制aiohttp异步...
    99+
    2024-04-02
  • 基于Node.js的强大爬虫 能直接发布抓取的文章哦
    一、环境配置 1)搞一台服务器,什么linux都行,我用的是CentOS 6.5; 2)装个mysql数据库,5.5或5.6均可,图省事可以直接用lnmp或lamp来装,回头还能直接在浏览器看日志; 3)...
    99+
    2022-06-04
    爬虫 强大 文章
  • Python:基于Python爬虫技术的抢票程序及其实现
    临近放假,相信我们每天都在群聊里或者朋友圈看到一些帮忙抢火车票的信息。看到朋友们抢回家的车票这么辛(bei)苦(can),结合圈里一些前辈的指点,抱着学习的心态用Python做了一个简单的自动化抢票程...
    99+
    2023-09-01
    python 爬虫 开发语言 测试工具 学习
  • Go语言并发爬虫的具体实现
    目录写在前面1. 单线程爬虫2. 多线程爬虫2.1 channel main函数2.2 sync.WaitGroup3. 源码地址写在前面 这篇文章主要让大家明白多线程爬虫,...
    99+
    2022-06-07
    爬虫 GO 并发 go语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作