• node的简单爬虫


    最近在学node,这里简单记录一下。

    首先是在linux的环境下,关于node的安装教程:   https://github.com/alsotang/node-lessons/tree/master/lesson0

    我看的教程里面还用来express框架 键入 $ npm install express --registry=https://registry.npm.taobao.org 来安装

    这样基本的环境就弄好了,装好以后来创建项目,过程如下:

    1.随便建一个文件夹,比如说是lesson3

    2.初始化(键入 $ npm init ),这里要让你设置 packag.json 文件,这个文件是用来记录项目的信息的,项目名,作者什么的,如果你没什么好写的就一路回车

    3.安装依赖包,(键入 $ npm install  ---save packagename),没有指定的情况下,默认从 npm 官方安装,上次我们是从淘宝的源安装的。二是多了个 --save 参数,这个参数的作用,就是会在你安装依赖的同时,自动把这些依赖写入 package.json

    爬虫需要 superagent 和 cheerio

    superagent(http://visionmedia.github.io/superagent/ ) 是个 http 方面的库,可以发起 get 或 post 请求

    cheerio可以理解为node端的jquery,爬虫的爬下来网页以后用类似jquery选择器的方式就能对dom树进行操作

    4.写应用逻辑

    逻辑也是三步:

    4.1加载依赖

    4.2处理爬虫

    4.3监听端口

    以cnode为例,https://cnodejs.org/ 可以先到页面上右键然后审查元素看看自己想要扒什么

    新建一个app.js文件,然后上代码:

    //请求依赖
    var express = require('express') ;
    var superagent = require('superagent') ;
    var cheerio = require('cheerio') ;
    var sys = require('sys') ;
    var app = express() ;
    //爬虫部分
    app.get('/',function(req,res,next){
        superagent.get('https://cnodejs.org/')
            .end(function(err,sres){
                if(err){
                    return next(err) ;
                }
                var $ = cheerio.load(sres.text) ;
                var items = [] ;
                //利用cheerio来获取页面信息,each函数来遍历所有节点
                var context = $('#topic_list .cell') ;
                context.each(function(idx,element){
                    console.error(this) ;
                    //作者名是从链接里扒出来的,所以用split处理一下
                    var name = $(this).find('.user_avatar').attr('href').split('/')[2] ;
                    var element = $(this).find('.topic_title') ;
                    obj = this ;
                    items.push({
                        title:element.attr('title'),
                        href:element.attr('href'),
                        author:name
                    });
                });
                //将结果输出到页面
                res.send(items) ;
            });
    });
    //监听部分,监听3000端口
    app.listen(3000,function(req,res){
        console.log('3000 is running');
    });

    这里注意就是和jq一样,在一个对象的方法中调用对象要再用$()把this包起来才有相应的方法。

    键入命令 $ node app.js来运行,从浏览器上访问 http://localhost:3000/ 来查看结果

    结果如图:

     

    学习是按照《Node.js 包教不包会》 -- by alsotang 来进行的,这里是网址 https://github.com/alsotang/node-lessons

     

  • 相关阅读:
    C#构造函数
    C#析构函数
    C#常量
    C#属性
    checklistbox的用法
    2012快捷键
    查询ORACLE存储关联表
    UltraDropDown
    Linux常用命令大全(非常全!!!)
    infra 仪表盘效果
  • 原文地址:https://www.cnblogs.com/maskmtj/p/4891517.html
Copyright © 2020-2023  润新知