优点:
由于node的驱动语言是javascript,而JavaScript是运行在浏览器上的脚本语言,其优势主要在于便于操作网页上的dom节点。
目标:
以下内容主要通过获取目标网页的节点信息内容。
下载相关依赖:
// 引入依赖
const superagent = require('superagent'); // superagent是nodejs里一个非常方便的客户端请求代码模块(也可以使用request)
const cheerio = require('cheerio'); // 可以理解为一个Node.js版本的Jquery
目标页面爬取相关代码:
//url为目标页面链接
superagent.get(url).end((err, res) => {
let postlist = getDetailHtml(res.text);
})
function getDetailHtml(html) {
console.log("xiangqing")
let $ = cheerio.load(html); // 使用cheerio
// F12分析后的节点数据,用Jquery的语法进行过滤、摘取
var objdata = {
api = 0,
pm25 = 0,
school_img = $('.tp img').attr('src') //直接获取相关图片
}
//若有相同节点,使用循环遍历获取到对应的节点内容
$('.data .span1').each((index, item) => {
let elem = $(item);
if (index == 0) {
aqi = elem.find('.value').text().trim()
} if (index == 1) {
pm25 = elem.find('.value').text().trim()
}
})
}
若要将数据存储到文件中,还需引入以下依赖:
引入fs模块
const fs= require(“fs”)
引入path模块
const path=require(“path”)
注释:fs模块为node内置的文件系统模块,负责读写文件。
将爬取到的数据存入本地:
// 保存在data.json中
fs.writeFile(path.join(__dirname,'data','data.json'),JSON.stringify(objdata),function(err){
if(err){
throw err;
}
console.log('ok');
});
总结:
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,有什么问题欢迎小伙伴指正。