1.安装request、cheerio两个模块(npm i request cheerio)
request 第三方模块包 发送简单的请求 获取响应
cheerio 第三方模块包 是nodejs抓取页面的模块
const request = require('request');
const cheerio = require('cheerio');
const fs = require('fs');
//声明一个数组来存放数据
var jsonData = [];
// 第一个网址是你想要数据的网址
request('https://desk.3gbizhi.com/deskMV/', (err, res, body) => {
// 此处的body是整个html的代码
var $ = cheerio.load(body);
//此处与jquery的选择器语法相同,each是循环符合选择的数组
$('.contlistw li').each(function () {
// 注意此处的this指向每一个li,找到li里面的img,
// console.log($(this).find('img').attr('lazysrc'));
jsonData.push({
url: $(this).find('img').attr('lazysrc'),
url2X: $(this).find('img').attr('lazysrc2x'),
title: $(this).find('img').attr('title')
})
})
// 使用fs模块的api在读取结束后,转化为JSON数据存入其中
fs.writeFile('./list.json', JSON.stringify(jsonData), err => {
if (!err) {
console.log('写入成功');
}
})
})
2.使用http来爬取数据
该方式不需要引入第三方模块,使用内置http模块即可;
const https = require('https');
const fs = require('fs');
https.get('https://www.douyu.com/japi/search/api/getHotList',res=>{
var str = '';
// 如果数据量比较大,会触发多次,将每次接受的数据都拼接起来
res.on('data',r=>{
str += r;
})
// 当响应结束时候;
res.on('end',()=>{
// console.log(str);
// 建立一个json文件存放数据
fs.writeFile('./data.json',str,err=>{
if (!err) {
console.log('爬取成功');
}
})
})
});