本人仅供个人学习使用(大神跳过,偏基础)
需求:通过Node.js爬取html页面meta信息并通过json格式返回给前端(js)
环境:1、自行安装好Node.js
2、安装好cheerio模块 命令 npm install cheerio
3、安装好express模块 命令npm install express
4、安装好body-parser模块 命令 npm install body-parser
前端js代码
var url = '需要爬取的页面地址';
var time = 1;
$.ajax({
url: 'http://127.0.0.1:3000/post', //express搭建的web服务器地址
data: {url: url},
dataType: 'json',
type: 'POST',
success: function (obj) {
console.log(obj)//打印返回的数据
},
error : function (obj) {
alert("网络异常,请检查网络!");
}
})
创建一个app.js文件
var http = require('http');
var cheerio = require('cheerio')
var express = require('express');
var bodyParser = require('body-parser')
var app = express();
var metaData= {
'description':'',
'keywords':'',
'statusCode':-1
}
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: false}))
app.post('/post', function (req, res) {
var params = req.body
getMetaInfor(params.url)
res.json(metaData)
})
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('服务器已经启动');
});
function getMetaInfor(url) {
var html = ''
http.get(url,function(res){
res.on('data',function(data){
html += data
})
res.on('end',function(){
var $ = cheerio.load(html)
metaData.description = $('meta[name="description"]').attr('content')
metaData.keywords = $('meta[name="keywords"]').attr('content')
metaData.statusCode = 200
})
}).on('error',function(){
console.log('error')
})
}