• 用node 开发简易爬虫


    一、需要的模块

    我们用node开发爬虫,使用express、request、cheerio这些成熟的框架和模块,快速把结构搭建起来

    二、安装模块

    下面我们正式开始安装模块,这里我们不介绍怎么安装express

    1、用express创建spider目录

    express spider
    

    2、模块初始化

    npm install
    

    3、安装需要模块request,cheerio

    npm install request --save-dev cheerio --save-dev

    4、全局安装supervisor(如果已经安装supervisor 的可以跳过此步骤)

    sudo npm install -g supervisor  
    

    5、改写app.js最基本的语句即可

    var express = require('express');
    var app = express();
    app.get('/', function (req, res) {
      res.send('hello world')
    }); 
    app.listen(3000); 

    6、执行进程监听

    supervisor start app.js
    

    这个时候页面能正常访问了

    7、我们选一个网易时尚页面去爬http://fashion.sina.com.cn/

    var express = require('express');
    var app = express();
    var request = require('request');
    var cheerio = require('cheerio');
    
    app.get('/', function (req, res) {
        request('http://fashion.sina.com.cn/', function (error, response, body) {
            if (!error && response.statusCode == 200) {
                console.log(body)
                res.send('hello world')
            }
    });
     app.listen(3000);

    这个时候我们就能把这个网页的页面都打印出来

    8、选热点新闻把内容爬下来,我们可以利用cheerio来获取节点

    var express = require('express');
    var app = express();
    var request = require('request');
    var cheerio = require('cheerio');
    
    app.get('/', function (req, res) {
      
      request('http://fashion.sina.com.cn/', function (error, response, body) {
        if (!error && response.statusCode == 200) {
          $ = cheerio.load(body); //当前$是一个拿到前端选择器
          var arr = [];
          for(var i = 0;i<$('.blk00_c').length;i++){
            arr.push({
              img:$($('.blk00_c img')[i]).attr('src'),
              tag:$($('.blk00_c h4 a')[i]).text(),
              title:$($('.blk00_c h5 a')[i]).text(),
              content:$($('.blk00_c p')[i]).text(),
            });
          }
          res.json({
            hots:arr
          });
           // Show the HTML for the Google homepage. 
        }
      });
      
    });
     app.listen(3000);

    效果如下

    以上只是一个简单的小例子

  • 相关阅读:
    Linux下软件安装方法即路径设置
    maven和jdk版本不匹配
    jobTracker 和taskTracker
    任务调度quartz
    springside3.1.8打包
    给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组
    二进制求和
    数组中找到目标值,并返回其索引
    加1问题
    给定字符串返回最后一个单词的长度
  • 原文地址:https://www.cnblogs.com/tongyq/p/5124406.html
Copyright © 2020-2023  润新知