作者:0度的浪漫神探 | 来源:互联网 | 2021-09-23 06:44
1.爬虫:爬虫,是一种按照一定的规则,自动地抓取网页信息的程序或者脚本;利用NodeJS实现一个简单的爬虫案例,爬取Boss直聘网站的web前端相关的招聘信息,以广州地区为例;
2.脚本所用到的nodejs模块
express 用来搭建一个服务,将结果渲染到页面
swig 模板引擎
cheerio 用来抓取页面的数据
requests 用来发送请求数据(具体可查:https://www.npmjs.com/package/requests)
async 用来处理异步操作,解决请求嵌套的问题,脚本中只使用了async.whilst(test,iteratee,callback),具体可见:https://caolan.github.io/async/
3.实现流程:
首先先获取到所爬取页面的URL,打开boss直聘网站,搜索web前端既可以获取到 https://www.zhipin.com/c101280100-p100901/?page=1&ka=page-next
然后通过Chrome浏览器打开F12,获取到信息中多对应的dom节点,即可知道想要获取信息;
4.代码实现
目录结构:
app.js
var cheerio = require('cheerio');
var requests = require('requests');
var async = require('async');
var express = require('express');
var swig = require('swig');
var app = express();
swig.setDefaults({cache:false});
app.set('views','./views/');
app.set('view engine','html');
app.engine('html',swig.renderFile);
app.get('/',function(req,res,next){
var page = 1; //当前页数
var list = []; //保存记录
async.whilst(
function(){
return page <11;
},
function(callback){
requests(`https://www.zhipin.com/c101280100-p100901/&#63;page=${page}&ka=page-next`)
.on('data',function(chunk){
var $ = cheerio.load(chunk.toString());
$('.job-primary').each(function(){
var company = $(this).find('.info-company .company-text .name').text();
var job_title = $(this).find('.info-primary .name .job-title').text();
var salary = $(this).find('.info-primary .name .red').text();
var description = $(this).find('.info-company .company-text p').text();
var area = $(this).find('.info-primary p').text();
var item = {
company:company,
job_title:job_title,
salary:salary,
description:description,
area:area
};
list.push(item);
});
page++;
callback();
}).on('end',function(err){
if(err){
console.log(err);
}
if(page==10){
res.render('index',{
lists:list
});
}
});
},
function(err){
console.log(err);
}
);
});
//监听
app.listen(8080);
view/index.html页面
公司名称 |
公司地址 |
薪资 |
公司描述 |
岗位名称 |
{% for list in lists %}
{{list.company}} |
{{list.area}} |
{{list.salary}} |
{{list.description}} |
{{list.job_title}} |
{% endfor %}
5.启动
直接通过 node app.js启动即可;
6.运行结果(http://localhost:8080),只截取部分数据
总结
以上所述是小编给大家介绍的NodeJs实现简单的爬虫功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!