zoukankan      html  css  js  c++  java
  • NodeJs编写小爬虫

    一,爬虫及Robots协议

    爬虫,是一种自动获取网页内容的程序。是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上就是针对爬虫而做出的优化。


    robots.txt是一个文本文件,robots是一个协议,而不是一个命令。robots.txt是爬虫要查看的第一个文件。robots.txt文件告诉爬虫在服务器上什么文件是可以被查看的,搜索机器人就会按照该文件中的内容来确定访问的范围。






    如上图,我们可以在网站中直接访问robots.txt文件查看网站禁止访问和允许访问的文件。

    二,使用NodeJs爬去网页需要安装的模块

    Express
    Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。
    中文API:http://www.expressjs.com.cn/

    Request
    简化了http请求。
    API:https://www.npmjs.com/package/request


    Cheerio
    以一种类似JQ的方式处理爬取到的网页。
    API:https://www.npmjs.com/package/cheerio

    这三个模块在安装NodeJs 之后,可以使用npm命令进行安装。

    三,简单爬取网页示例

    var express = require('express');
    var app = express();
    var request = require('request');
    var cheerio = require('cheerio');
    app.get('/', function(req, res){
        request('http://blog.csdn.net/lhc1105', function (error, response, body) {
          if (!error && response.statusCode == 200) {
            $ = cheerio.load(body);//当前的$,它是拿到了整个body的前端选择器
          console.log($('.user_name').text()); //我博客的获取用户名
          }else{
             console.log("思密达,没爬取到用户名,再来一次");
          }
    })
    });
    app.listen(3000);


    之后,



    然后在浏览器中访问:http://localhost:3000/,就能看到输出的用户名。

    感觉比python爬取方便点儿,主要是对网页元素解析上,省去了很多正则表达式。

    by the way ,新年快乐~~~

  • 相关阅读:
    技术债务墙:一种让技术债务可见并可协商的方法
    墙裂推荐
    shell 脚本通过Webhook 发送消息到微信群
    关于中医的一段对话 [ZZ] -- 思维训练故事
    应用深度神经网络预测学生期末成绩
    Python中的模块引用机制
    批量修改含空格的文件名「Linux」
    Markdown数学公式语法
    批处理修改IP
    FTD团队目录
  • 原文地址:https://www.cnblogs.com/jayruan/p/5185378.html
Copyright © 2011-2022 走看看