博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于nodejs的爬虫
阅读量:6577 次
发布时间:2019-06-24

本文共 1855 字,大约阅读时间需要 6 分钟。

主要用到这三个模块:

express

request

cheerio

  • 其中express是服务端框架
  • request相当于前端的ajax请求
  • cheerio相当于jquery
开始
首先我们先新建一个 spider目录,进入该目录依次执行以下命令:
npm install express -g
npm install express-generator -g
npm install request --save-dev
npm install cheerio --save-dev
express
npm 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相关信息:
 
 

接着,我们用上

 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');
 });
 
 
 
 
 
 
 
 
 
 
 
 
 

转载于:https://www.cnblogs.com/luoxiaoxi/p/5348054.html

你可能感兴趣的文章
你不可不知的GopherChina大咖讲师们
查看>>
《Java工程师成神之路-基础篇》Java基础知识——序列化(已完结)
查看>>
iOS App间相互跳转漫谈 part2
查看>>
Android逆向之路---让我们试试另一种方法看漫画-(2)
查看>>
Java CAS 原理剖析
查看>>
iOS UIButton之UIEdgeInsets详解
查看>>
ISCC2014 writeup
查看>>
Java&Android 基础知识梳理(8) 容器类
查看>>
Kotlin 知识梳理(1) Kotlin 基础
查看>>
js正则表达式
查看>>
iOS socket通信,编解码,浮点型数据解析
查看>>
四十四、【CardView】
查看>>
Spring 定时器的使用---Xml、Annotation、自定义
查看>>
5步教你正确挑选一个期权合约!
查看>>
手把手教你如何新建scrapy爬虫框架的第一个项目(下)
查看>>
前端基础15:JS作用域基础
查看>>
Linux系统相关命令
查看>>
BATJ面试必会之 Spring 篇(一)
查看>>
表驱动法
查看>>
什么是企业内训
查看>>