基于nodejs的爬虫
主要用到这三个node模块:
express
request
cheerio
- 其中express是服务端框架
- request相当于前端的ajax请求
- cheerio相当于jquery
开始
首先我们先新建一个 spider目录,进入该目录依次执行以下命令:
npm install express -gnpm install express-generator -gnpm install request --save-devnpm install cheerio --save-devexpressnpm install
OK 我们的项目目录变成这个样子:
前期工作完成。
Coding
修改app.js文件如下:
var express = require('express');
var app = express();
app.get('/', function(req, res) {
res.send('hello express');
});
app.listen(3, function() {
console.log('listening on 3');
});
终端执行命令:
supervisor app.js
(注:supervisor是nodejs中监控进程用的。比如我们修改了app.js 那么supervisor就会自动去重启这个文件,不需要手动去node app.js,可以通过 npm install supervisor -g 来安装。)
打开 127.0.0.1:3
看到页面上输出了 hello express
ok,一切正常。
然后我们看下request。我们去到npm 里面 request的官网
看到关于他的使用:修改app.js如下:
var express = require('express');
var app = express();
var request = require('request');
app.get('/', function(req, res) {
request('http://www.cnblogs.com/luoxiaoxi/', function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);// Show the HTML for the request page.
res.send('hello express');
}
});
});
app.listen(3, function() {
console.log('listening on 3');
});
刷新页面,等一会,会看到终端打印出了html相关信息:
接着,我们用上 cheerio
var express = require('express');
var app = express();
var request = require('request');
var cheerio = require('cheerio');
app.get('/', (req, res)=>{
request('http://www.cnblogs.com/luoxiaoxi/', (error, response, body)=>{
if (!error && response.statusCode == 200) {
$ = cheerio.load(body); //拿到body,作为选择器
// res.json({
// 'result':$('#main .post h2 a').text()
// });
var titles = [];
$('#main .post h2 a').each((i,elem)=>{
//titles[i] = $(this).text();
titles[i] = elem["children"][0]["data"];
});
//titles.join(',');
res.send(titles);
//res.send("END");
}
});
});
app.listen(3, ()=>{
console.log('listening on 3');
});