个人网站 https://iiter.cn 程序员导航站 开业啦,欢迎各位观众姥爷赏脸参观,如有意见或建议希望能够不吝赐教!

开始之前请先确保自己安装了Node.js环境,还没有安装的的童鞋请自行百度安装教程......

直接开始吧

1.在项目文件夹安装两个必须的依赖包

  1. npm install superagent --save-dev

SuperAgent(官网是这样解释的)

-----SuperAgent is light-weight progressive ajax API crafted for flexibility, readability, and a low learning curve after being frustrated with many of the existing request APIs. It also works with Node.js!

-----superagent 是一个轻量的,渐进式的ajax api,可读性好,学习曲线低,内部依赖nodejs原生的请求api,适用于nodejs环境下

  1. npm install cheerio --save-dev

Cheerio

-----cheerio是nodejs的抓取页面模块,为服务器特别定制的,快速、灵活、实施的jQuery核心实现。适合各种Web爬虫程序。相当于node.js中的jQuery

2.新建  crawler.js  文件

  1. //导入依赖包
  2. const http = require("http");
  3. const path = require("path");
  4. const url = require("url");
  5. const fs = require("fs");
  6. const superagent = require("superagent");
  7. const cheerio = require("cheerio");

3.看注释啦(这里爬取的是boss直聘网站的数据)

  1. superagent
  2. .get("https://www.zhipin.com/job_detail/?city=100010000&source=10&query=%E5%89%8D%E7%AB%AF")
  3. .end((error,response)=>{
  4. //获取页面文档数据
  5. var content = response.text;
  6. //cheerio也就是nodejs下的jQuery 将整个文档包装成一个集合,定义一个变量$接收
  7. var $ = cheerio.load(content);
  8. //定义一个空数组,用来接收数据
  9. var result=[];
  10. //分析文档结构 先获取每个li 再遍历里面的内容(此时每个li里面就存放着我们想要获取的数据)
  11. $(".job-list li .job-primary").each((index,value)=>{
  12. //地址和类型为一行显示,需要用到字符串截取
  13. //地址
  14. let address=$(value).find(".info-primary").children().eq(1).html();
  15. //类型
  16. let type=$(value).find(".info-company p").html();
  17. //解码
  18. address=unescape(address.replace(/&#x/g,'%u').replace(/;/g,''));
  19. type=unescape(type.replace(/&#x/g,'%u').replace(/;/g,''))
  20. //字符串截取
  21. let addressArr=address.split('<em class="vline"></em>');
  22. let typeArr=type.split('<em class="vline"></em>');
  23. //将获取的数据以对象的形式添加到数组中
  24. result.push({
  25. title:$(value).find(".name .job-title").text(),
  26. money:$(value).find(".name .red").text(),
  27. address:addressArr,
  28. company:$(value).find(".info-company a").text(),
  29. type:typeArr,
  30. position:$(value).find(".info-publis .name").text(),
  31. txImg:$(value).find(".info-publis img").attr("src"),
  32. time:$(value).find(".info-publis p").text()
  33. });
  34. // console.log(typeof $(value).find(".info-primary").children().eq(1).html());
  35. });
  36. //将数组转换成字符串
  37. result=JSON.stringify(result);
  38. //将数组输出到json文件里 刷新目录 即可看到当前文件夹多出一个boss.json文件(打开boss.json文件,ctrl+A全选之后 ctrl+K,再Ctrl+F即可将json文件自动排版)
  39. fs.writeFile("boss.json",result,"utf-8",(error)=>{
  40. //监听错误,如正常输出,则打印null
  41. if(error==null){
  42. console.log("恭喜您,数据爬取成功!请打开json文件,先Ctrl+A,再Ctrl+K,最后Ctrl+F格式化后查看json文件(仅限Visual Studio Code编辑器)");
  43. }
  44. });
  45. });

这里有324.57GB的修仙资料。嘿嘿嘿你懂得。/手动狗头


那么问题来了,如果你也想入坑前端或者学习更多技术,广交天下朋友(基友),认识更多有趣的灵魂的话,欢迎加入前端交流群鸭~

扫二维码加为好友就完事了!安排~

手把手教你用Node.js爬虫爬取网站数据的更多相关文章

  1. 使用node.js如何爬取网站数据

    数据库又不会弄,只能扒扒别人的数据了. 搭建环境: (1).创建一个文件夹,进入并初始化一个package.json文件.  npm init -y (2).安装相关依赖:  npm install ...

  2. Node.js 爬虫爬取电影信息

    Node.js 爬虫爬取电影信息 我的CSDN地址:https://blog.csdn.net/weixin_45580251/article/details/107669713 爬取的是1905电影 ...

  3. node.js爬虫爬取拉勾网职位信息

    简介 用node.js写了一个简单的小爬虫,用来爬取拉勾网上的招聘信息,共爬取了北京.上海.广州.深圳.杭州.西安.成都7个城市的数据,分别以前端.PHP.java.c++.python.Androi ...

  4. Node.js爬虫-爬取慕课网课程信息

    第一次学习Node.js爬虫,所以这时一个简单的爬虫,Node.js的好处就是可以并发的执行 这个爬虫主要就是获取慕课网的课程信息,并把获得的信息存储到一个文件中,其中要用到cheerio库,它可以让 ...

  5. 养只爬虫当宠物(Node.js爬虫爬取58同城租房信息)

    先上一个源代码吧. https://github.com/answershuto/Rental 欢迎指导交流. 效果图 搭建Node.js环境及启动服务 安装node以及npm,用express模块启 ...

  6. node js 爬虫爬取静态页面,

    先打一个简单的通用框子 //根据爬取网页的协议 引入对应的协议, http||https var http = require('https'); //引入cheerio 简单点讲就是node中的jq ...

  7. node:爬虫爬取网页图片

    代码地址如下:http://www.demodashi.com/demo/13845.html 前言 周末自己在家闲着没事,刷着微信,玩着手机,发现自己的微信头像该换了,就去网上找了一下头像,看着图片 ...

  8. 利用linux curl爬取网站数据

    看到一个看球网站的以下截图红色框数据,想爬取下来,通常爬取网站数据一般都会从java或者python爬取,但本人这两个都不会,只会shell脚本,于是硬着头皮试一下用shell爬取,方法很笨重,但旨在 ...

  9. Node.js爬虫抓取数据 -- HTML 实体编码处理办法

    cheerio DOM化并解析的时候 1.假如使用了 .text()方法,则一般不会有html实体编码的问题出现 2.如果使用了 .html()方法,则很多情况下(多数是非英文的时候)都会出现,这时, ...

随机推荐

  1. 整数逆序输出 Python

    输入形式:123  输出形式:321 输入形式:120 输出形式:21  (整数不能以0打头) 输入形式:-123 输出形式:-321 代码: a=int(input()) b=0 if a<0 ...

  2. Linux基础:Day01

    Linux操作系统的知识体系: 1.初级  2.中级  3.高级  4.*额外知识*  1.初级  1.1.OS操作系统的原理  1.2.开始了解常用的命令(系统管理的基础命令)   开机关机   时 ...

  3. layui经典模块化前端UI框架初识

    layui产生背景 layui相对于vue来说确实稍有逊色,但是官网提供的入门文档以及完善的框架结构,使的很多人开始用layui来开发前端页面,那么什么人会去使用layui呢? 针对后端开发人员,在对 ...

  4. python连接mysql中文数据编码

    系统是win7 x64 Python 2.7.6的site.py里面编码设定为 utf-8 py文件首行指定 #coding:utf-8 MySQL 5.5.38安装时指定代码为utf-8 peewe ...

  5. springboot httpsession.getAtt....is null

    1.开始怀疑是 @RequestMapping("") public String loginIndex() { return "admin/login"; } ...

  6. Mac配置hosts文件

    说明:工作里面有时候会遇到内网办公的环境,需要对使用的IP和地址进行配置到hosts文件内,所以记录一下: 1,Windows配置hosts Windows里面直接打开文件夹,可进行找到system/ ...

  7. 使用spring连接mysql数据库出错

    最近在学习spring框架,但是在学到JdbcTemplate时连接数据库一直报错,百度谷歌各种查找都能没有解决问题,简直要癫狂,报错信息如下: org.springframework.jdbc.Ca ...

  8. alg-最长公共子序列

    class Solution { public: std::string LongestCommonSubsequence(const std::string& s1, const std:: ...

  9. AJ学IOS 之CoreLocation基本使用

    猫猫分享,必须精品AJ 一:CoreLocation的基本使用 使用步骤: 首先导入头文件#import <CoreLocation/CoreLocation.h> 1.创建CoreLoc ...

  10. G - Harmonic Number (II) LightOJ - 1245

    算是一个找规律的题目吧. 枚举前sqrt(n)个数,数i出现的次数为n/i-n/(i+1),对答案的贡献为(n/i-n/(i+1))*i. 对于sqrt后边的数,可以直接由n/i获得,并且一定只出现一 ...