• 其中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,筛选等等等等。。。。

好了。

大体就这么多了。

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

nodejs爬虫系统的更多相关文章

  1. NodeJS爬虫系统初探

    NodeJS爬虫系统 NodeJS爬虫系统 0. 概论 爬虫是一种自动获取网页内容的程序.是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上是针对爬虫而做出的优化. robots.txt是一个文本文 ...

  2. nodejs爬虫--抓取CSDN某用户全部文章

    最近正在学习node.js,就像搞一些东西来玩玩,于是这个简单的爬虫就诞生了. 准备工作 node.js爬虫肯定要先安装node.js环境 创建一个文件夹 在该文件夹打开命令行,执行npm init初 ...

  3. 【nodejs 爬虫】使用 puppeteer 爬取链家房价信息

    使用 puppeteer 爬取链家房价信息 目录 使用 puppeteer 爬取链家房价信息 页面结构 爬虫库 pupeteer 库 实现 打开待爬页面 遍历区级页面 方法一 方法二 遍历街道页面 遍 ...

  4. NodeJS 爬虫爬取LOL英雄联盟的英雄信息,批量下载英雄壁纸

    工欲善其事,必先利其器,会用各种模块非常重要. 1.模块使用 (1)superagent:Nodejs中的http请求库(每个语言都有无数个,java的okhttp,OC的afnetworking) ...

  5. Nodejs爬虫进阶教程之异步并发控制

    Nodejs爬虫进阶教程之异步并发控制 之前写了个现在看来很不完美的小爬虫,很多地方没有处理好,比如说在知乎点开一个问题的时候,它的所有回答并不是全部加载好了的,当你拉到回答的尾部时,点击加载更多,回 ...

  6. 用python3.x与mysql数据库构建简单的爬虫系统(转)

    这是在博客园的第一篇文章,由于本人还是一个编程菜鸟,也写不出那些高大上的牛逼文章,这篇文章就是对自己这段时间学习python的一个总结吧. 众所周知python是一门对初学编程的人相当友好的编程语言, ...

  7. nodejs爬虫——汽车之家所有车型数据

    应用介绍 项目Github地址:https://github.com/iNuanfeng/node-spider/ nodejs爬虫,爬取汽车之家(http://www.autohome.com.cn ...

  8. nodejs爬虫笔记(三)---爬取YouTube网站上的视频信息

    思路:通过笔记(二)中代理的设置,已经可以对YouTube的信息进行爬取了,这几天想着爬取网站下的视频信息.通过分析YouTube,发现可以从订阅号入手,先选择几个订阅号,然后爬取订阅号里面的视频分类 ...

  9. nodejs爬虫笔记(二)---代理设置

    node爬虫代理设置 最近想爬取YouTube上面的视频信息,利用nodejs爬虫笔记(一)的方法,代码和错误如下 var request = require('request'); var chee ...

随机推荐

  1. 怎么样cocos2d-x正在使用ECS(实体-包裹-制)建筑方法来开发一款游戏?

    简介 在我的博客,我翻译的几篇文章ECS文章.这些文章都是从Game Development站点.假设你对这个架构方式还不是非常了解的话.欢迎阅读理解 组件-实体-系统和实现 组件-实体-系统. 我发 ...

  2. [LeetCode61]Rotate List

    题目: Given a list, rotate the list to the right by k places, where k is non-negative. For example:Giv ...

  3. 【YouVersion】 The Bible 圣经App

    [YouVersion] The Bible 圣经 App 今天向大家郑重推荐一款非常棒的圣经App : <The Bible>   YouVersion 团队开发的全球下载量和安装数目第 ...

  4. 开源Math.NET基础数学类库使用(04)C#解析Matrix Marke数据格式

    原文:[原创]开源Math.NET基础数学类库使用(04)C#解析Matrix Marke数据格式 开源Math.NET基础数学类库使用系列文章总目录:   1.开源.NET基础数学计算组件Math. ...

  5. ListView的操作模式的选择的更详细的解释CHOICE_MODE_MULTIPLE与CHOICE_MODE_MULTIPLE_MODAL

    本文介绍了我们将如何取得具体ListView多选择操作.本文将正确使用ListViewCHOICE_MODE_MULTIPLE要么CHOICE_MODE_MULTIPLE_MODAL时间easy误区. ...

  6. Socket编程实践(4) --更复杂的过程server

    1.Socket地址复用 int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen); in ...

  7. xaml的margin和css的margin对比

    css margin xaml margin 例子 1 css margin:10px 5px 15px 20px;上右下左 上外边距是 10px 右外边距是 5px 下外边距是 15px 左外边距是 ...

  8. 【ASP.NET】判断访问网站的客户端是PC还是手机

    原文:[ASP.NET]判断访问网站的客户端是PC还是手机 主要就是通过客户端传递的User-agent来判断访问网站的客户端是PC还是手机,.NET中就是Request.ServerVariable ...

  9. Android组件系列----ContentProvider内容提供商【5】

    2.执行query()方法,查询全部记录(眼下一共两条记录).后台输出效果例如以下: 经測试,其它方法也都是能够运行的. 事实证明,新建的另外一个project文件ContentResolverTes ...

  10. Git--Submodule使用

    项目模板中通常由前端保持,所以每次更新模板.我也要跟着变化项目. 随着时间的推移,这不是一个方法来找到,老这么维护.大型项目,更多的模板,真的很容易管理和维护. 然后头让我用submodule前端资源 ...