3

这里假设你已经安装好node.js和npm,如果没有安装,请参阅其他教程安装。

  • 配置
    首先是来配置package.json文件,这里使用express,request和cheerio。

package.json如下:

{
  "name": "node-scrape",
  "version": "0.0.1",
  "description": "Scrape",
  "main": "server.js",
  "dependencies": {
    "express" : "latest",
    "request" : "latest",
    "cheerio" : "latest"
  }
}
  • npm 安装
    把package.json文件放到一个你自己定义的文件夹(nodejs_scrape)下,然后在命令行下执行

cd nodejs_scrape
npm install
  • 抓取内容
    在nodejs_scrape目录下新建一个server.js文件,先定义如下变量的和方法

var express = require('express');
var fs = require('fs');
var request = require('request');
var cheerio = require('cheerio');
var app = express();

app.get('/',function (req,res) {
    //抓取内容的方法
});

app.listen('8081'); //使用8081端口

console.log('Magic happens on port 8081');

exports = module.exports = app;

下面我们就来完善get方法的内容
首先定义要抓取的url,这里以segmentfault为例

url  = 'https://segmentfault.com/news';

页面如下面所示,点击F12查看,我们就提取最简单的 class="mr10" 这个标签
图片描述

抓取内容的方法如下

 request(url, function (err,res,html) {
        if (!err){ 
            var $ = cheerio.load(html);

            var title;

            $('.mr10').filter(function () {
                var data = $(this);

                title = data.text(); //获取标签的内容

                console.log('title is ' + title); //控制台打印
            });
        }
    });

server.js完整代码如下

/**
 * Created by Administrator on 2017/3/1.
 */
var express = require('express');
var fs = require('fs');
var request = require('request');
var cheerio = require('cheerio');
var app = express();

app.get('/',function (req,res) {

    //all scrape magic will happen here

    url  = 'https://segmentfault.com/news';

    request(url, function (err,res,html) {
        if (!err){
            var $ = cheerio.load(html);

            var title;

            $('.mr10').filter(function () {
                var data = $(this);

                title = data.text();

                console.log('title is ' + title);
                
            });
        }
    });

});

app.listen('8081');

console.log('Magic happens on port 8081');

exports = module.exports = app;
  • 运行
    在nodejs_scrape目录下运行 node server ,可以看到如下所示

图片描述

在浏览器运行http://127.0.0.1:8081/,可以看到抓取的内容如下:

抓取的标题

这样我们就完成了一个简单到不能再简单的node.js爬虫。


Mofei
81 声望11 粉丝

Lumino