前言
- 爬虫又叫网络蜘蛛,可以去其他网站上进行数据抓取
- 国内做爬虫的常用开发语言:python、java、php等,其实nodejs也能写爬虫
在写爬虫之前,需要先了解一个nodejs的模块:fs - fs是文件系统,可以操作系统文件
- 使用之前需要先引入fs模块:
const fs = require(“fs”); - fs.writeFileSync()可以船机文件,并写入文件内容,比如:
fs.writeFileSync("./测试1.txt",“这是一段测试的文字”); - 参数一表示创建的文件名
- 参数二表示创建的文件的内容
准备工作
nodejs写爬虫需要安装两个插件:
- axios:这个插件是用来发起网络请求的
- cheerio:用来对字符串做解析,可以把字符串转换为类jQ对象的形式
安装方法: - 可以在cmd内输入命令:
npm i axios cheerio 回车安装 - 也可以在编辑器内的终端输入上面命令安装
以上装备工作就已经完成了,我们以一个小说网站举例
const fs = require("fs");
const cheerio = require("cheerio");
const axios = require("axios").default;
//定义一个数组,用来放爬回的数据
const books = [];
//发起一个get请求,里面输入你要爬的网站的网址
axios.get("https://www.hongxiu.com/rank/hotsales").then(function (res) {
//res.data 是爬回来的页面结构代码,通过cheerio.load转换一下,就可以使用jquery的语法操作了
const $ = cheerio.load(res.data);
//这里是选择页面结构的标签,根据具体情况按需选择
//jquery的each遍历的回调函数的第一参数是表示索引
$(".book-img-text ul li").each(function (index) {
let book = {};
//给每个数据一个id
book.id = index;
//保存图片的路径
book.img = "https:"+$(this).find(".book-img-box a img").attr("src");
//保存一个标题
book.title = $(this).find(".book-mid-info h4 a").text();
//把对象放进数组中
books.push(book);
});
//创建一个json文件,把数组转成json字符,写入创建的json文件内
fs.writeFileSync("./pachong.json",JSON.stringify(books));
});
//以上就是一个简单的爬虫