网络爬虫
1.什么是网络爬虫
2.网络爬虫需要的模块
3.网络爬虫的具体步骤
什么是网络爬虫?
通过nodejs里的模块去下载网站上的某些数据的这一步骤就叫做网络爬虫
网络爬虫所需要的模块
http/https模块(所要爬虫网站协议的格式)
fs模块:
写入文件模块,用于将下载到的数据写入一个单独的文件里面
cheerio模块(第三方模块):
提取下载到的某部分需要的数据
网络爬虫的具体步骤
1> 引入所需要的模块
const http = require(“http”);
const https = require(“https”); 引入所需要爬虫网站的网络协议
const fs = require(“fs”); 引入fs模块,将下载到的数据写入一个json文件里
2>所需要爬虫网站的url
var url = "https://www.lagou.com/"; 这里使用的是豆瓣网的网址
3>通过https协议请求链接,下载里面的数据
https.get(url,function(res){
// res (“response” 响应对象)
var html = “”; //声明一个空的字符串,用来存储下载到的数据
// 启动data事件 如果接收到数据就会触发该事件
res.on(“data”,function(data){
html += data;
})
//
// end事件 响应结束后触发
res.on(“end”,function(){
// console.log(html);
// 调用方法进行解析 cheerio 第三方包
var res = filterMenu(html);
// console.log(res)
//将爬到的数据转成json格式的字符串
var str = JSON.stringify(res);
// 通过正则将数据里的空格全部替换成空字符串
str = str.replace(/\s/g,"")
// 将字符串写入到json文件里
fs.writeFile(“lagou.json”,str,function(error){
if(error){
console.log(error);
}else{
console.log(“写入成功”)
}
})
})
// 监听错误信息
res.on(“error”,function(error){
console.log(error);
})
})
const cheerio = require(“cheerio”)
//编写一个过滤数据的函数
function filterMenu(html){
// 1.加载下载到的数据
// 声明一个$的变量=所拿到的数据
// 只要写了这行代码 就可以用jq中的选择器来选中所需要下载的数据了
var $ = cheerio.load(html);
// 2.使用$这个对象 进行类似于jq的形式 来拿到想要的数据
var menu = $(".menu_main");
// 3.解析
var menuData = [];// 声明一个新的数组 用来存放解析出来的数据
menu.each(function(index,item){
// 通过each遍历所有选中的元素 第一个参数 下标 第二个参数是 遍历到的元素节点
// 获取一级标题
var menuTitle = $(item).find(“h2”).text();
// 二级标题
var menuLists = $(item).find(“a”);
var menuListsData = []; //存放二级标题
menuLists.each(function(index,item){
// 遍历二级标题
menuListsData.push($(item).text());
})
menuData.push({
menuTite: menuTitle,
menuListsData: menuListsData
})
})
return menuData
}
上一篇: 网络爬虫
下一篇: lintcode最小调整代价