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

node实现简单爬虫功能

程序员文章站 2022-06-30 20:44:45
...

前言

第一次写文章,有点小激动和忐忑,有这个想法是想在编程的路上走远点,为了能让自己学过的东西更深入、印象更深刻(当然相信如果以后写的好的话肯定还是有很大的成就感的),写文章的初衷是为了做笔记,如果能帮助到你,会很开心。

目标

爬取拉钩网首页banner左侧的菜单栏,一级和二级的菜单。
node实现简单爬虫功能

开始

1、安装node,我们可以用npm或者cnpm(淘宝镜像)安装
2、新建一个文件夹,运行npm init 一路回车(也可以自行配置)生成package.json文件
3、新建一个index.js文件,撸代码

备注

需要用到的模块:
1、 fs模块:用于对系统文件及目录进行读写操作,将爬去到的数据写入本地目录(node自带模块,可直接引入)
2、http/https:node中重要的模块,在这里用来发起请求爬取数据(node自带模块,可直接引入)
3、cheerio:cheerio是一个node的库,可以理解为一个Node.js版本的jquery,用来从网页中以 css selector取数据,使用方式和jquery基本相同(需npm手动安装)
4、因为逻辑并不大复杂,所以直接附上代码。

附上代码(index.js)

//如果要爬取的地址是http开头的,则导入http模块
var https = require('https');
var fs = require('fs');
//使用get方法
var cheerio = require('cheerio');
https.get('https://www.lagou.com/',function(res){
    var html = '';
    res.on('data',function(chunk){
        html +=chunk;
    });
    res.on('end',function(){
        console.log(findMenu(html));

    });
    res.on('error',function(){
        console.log(error);
    })
})
function findMenu(html){
    var $ = cheerio.load(html);
    //可以打开拉勾网比对,菜单第一层的类名为.meun_main
    var Menu = $('.menu_main');
    var arr = [];
    Menu.each(function(i,item)
        var oneMenu = $(item).find('h2').text().trim();
        var twoMenu = $(item).find('a');
        var obj = {};
        obj.oneMenu = oneMenu;
        obj.twoMenu = [];
        twoMenu.each(function(i, item) {
            var value = $(item).text();
            obj.twoMenu.push(value);
        });
        arr.push(obj);
        fs.writeFile('./tmp/job.json',JSON.stringify(arr),function (err) {
            if(err){
                throw err;
            }
        })
    })
    return arr;

}

运行node index.js 即可得到想要的数据,并写入到了当前的tmp文件夹中。
node实现简单爬虫功能
如有问题请及时反馈,欢迎一起交流~

相关标签: node