欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

网络爬虫

程序员文章站 2022-07-05 12:54:10
...
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

}