• 其中express是服务端框架
  • request相当于前端的ajax请求
  • cheerio相当于jq
开始
首先我们先新建一个 crawler目录
执行 npm install express -g 命令 和  npm install express-generator -g 命令
 
接着 cd crawler 进入crawler目录   执行 npm install request --save-dev  和  npm install cheerio --save-dev             
 
然后在我们的目录下建立express项目  直接命令行执行 express
OK 我们的项目目录变成这个样子:
 
接下来
我们首先安装下项目的依赖,执行 npm install 就OK
 
那这样我们的前期工作就做好了。
 
接着
我们打开app.js
我们来修改他。
如下:
 var express = require('express');
var app = express(); app.get('/', function(req, res) {
res.send('hello express');
}); app.listen(3000, function() {
console.log('listening on 3000');
});
终端执行 supervisor app.js
(注:supervisor是nodejs中监控进程用的。比如我们修改了app.js 那么supervisor就会自动去重启这个文件,不需要我们手动去node app.js,用户可以通过 npm install supervisor -g 来安装。这个也是我们在nodejs开发中常用到的一个工具)
 
OK。
我们打开127.0.0.1:3000
看到页面上输出了 hello express。 一切正常
 
就下来我们看下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/galenyip', function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);// Show the HTML for the Google homepage.
res.send('hello express');
}
});
}); app.listen(3000, function() {
console.log('listening on 3000');
});

地址修改成我的博客地址吧。来爬爬我这个博客

OK,刷新我们的页面。等一会,会看到终端打印出了html相关信息。

接着,

我们用上 cheerio

在app.js中 我们就入 var cherrio = require('cherrio');

 var express = require('express');
var app = express();
var request = require('request');
var cheerio = require('cheerio'); app.get('/', function(req, res) {
request('http://www.cnblogs.com/galenyip', function (error, response, body) {
if (!error && response.statusCode == 200) {
$ = cheerio.load(body); //拿到body,作为选择器
}
});
}); app.listen(3000, function() {
console.log('listening on 3000');
});

同时,我们可以看到  cheerio.load(body)就是我们拿到的页面,把它作为总的选择器。

之后的,我们就可以像操作jq一样操作这个页面了。

具体的api可以到官网:

https://www.npmjs.com/package/cheerio

它的api跟jq很像,那这个就不做介绍了

其实,我们的整个爬虫就差不多了。

剩下的就是看客们根据自己的需要,去抓取页面的dom,筛选等等等等。。。。

好了。

大体就这么多了。

有不懂的,或者纰漏的,大家可以在评论里面交流拍砖。

最新文章

  1. SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称
  2. SharePoint 开启网站匿名访问图文详解
  3. java 极光推送
  4. NEWS - InstallShield 2015 正式发布
  5. Deformity PHP Webshell、Webshell Hidden Learning
  6. The Producer-Consumer Relationship Version 2
  7. Win2D 官方文章系列翻译 - 避免内存泄漏
  8. HTML5之 离线数据存储
  9. 阻止IOS自动识别页面上的电话号码、email地址
  10. CentOS6.5 配置防火墙+允许指定ip访问端口
  11. 男性在下一100层【第三层】——高仿手机银行client接口
  12. vim编辑器设置文件的fileformat
  13. Windows Phone 8.1开发:触控和指针事件2
  14. vijos1046题解
  15. Json解析封装GsonUtil
  16. leetcode-只出现一次的数字
  17. this的学习
  18. 【转载】MySql新建账号并分配权限
  19. 各种数据库连接字符串 -- c#
  20. 另一个画风的GSS1 - Can you answer these queries I(猫树)

热门文章

  1. 答读者问(8):相关Java问题涉及到学习
  2. Linux X86在下面TLB机制
  3. Python 获得Facebook用户有一个共同的兴趣Friends
  4. Chapter 2 User Authentication, Authorization, and Security(4):限制SA帐户管理权限
  5. BigPipe设计原理
  6. linux下getsockopt和setsockopt具体解释及測试
  7. error C2871: 'std' : does not exist or is not a namespace
  8. WPF学习(1)WPF概述
  9. WinJS Clipboard
  10. 【MySQL案件】ERROR 1665 (HY000)