app.js

// 内置http模块,提供了http服务器和客户端功能
var http=require("http");

// 内置文件处理模块
var fs=require('fs');

// 创建一个将流数据写入文件的WriteStream对象
var outstream=fs.createWriteStream('./list.html');

// 存储文章标题的数组
var titles=[];

// 请求参数JSON
var options={
    hostname:'www.cnblogs.com',// 这里别加http://,否则会出现ENOTFOUND错误
        port:80,
        path:'/xiandedanteng/p/',// 子路径
      method:'GET',
};

// 请求并获得数据
var req=http.request(options,function(resp){
    console.log('状态码resp.statusCode='+resp.statusCode);
    console.log('响应头resp.headers='+JSON.stringify(resp.headers));
    resp.setEncoding('utf8');

    resp.on('data',function(chunk){
        //console.log('响应内容:'+chunk);

        // 匹配链接的正则表达式
        var reg=/<a\s(?:\w*?=".*?"\s)*(?:href=")(.*?)(?:")(?:\s\w*?=".*?")*>(.+?)<\/a>/g
        var res;
        while((res = reg.exec(chunk)) != null){
            //console.log("link="+res + '\n'); // 全部匹配的文字
            //console.log("href="+res[1] + '\n'); // 子匹配 链接
            //console.log("text="+res[2] + '\n'); // 子匹配 文字部分

            var href=res[1];
            var regHref=/http:[/][/]www.cnblogs.com[/]xiandedanteng[/]p[/](\d+).html/g;
            if(href.match(regHref)){
                var text=res[2];
                console.log("text="+text + '\n');
                titles.push(text);
            }
        }

        outstream.write(titles.join("\n"),'utf8');
        console.log('文件写入完毕。');
    });
});

// 超时处理
req.setTimeout(5000,function(){
    req.abort();
});

// 出错处理
req.on('error',function(err){
    if(err.code=="ECONNRESET"){
        console.log('socket端口连接超时。');
    }else{
        console.log('请求发生错误,err.code:'+err.code);
    }
});

// 请求结束
req.end();

读取出来的文字目录:

Node.js 使用http客户端向网站请求数据并保存
近来这些事
Node.js 文件系统流pipe到Http响应流中
Node.js 使用angularjs取得Nodejs http服务端返回的JSON数组示例
Node.js 使用jQuery取得Nodejs http服务端返回的JSON数组示例
Node.js 使用jQuery取得Nodejs http服务端返回的JSON对象示例
Node.js 本地Xhr取得Node.js服务端数据的例子
Node.js node主文件找不到时报出的Error:Cannot find module异常
Node.js 极简入门Helloworld版服务器例子
浅滩

Node.js 读取博客首页并获得文章标题的更多相关文章

  1. 一个基于Vue.js+Mongodb+Node.js的博客内容管理系统

    这个项目最初其实是fork别人的项目.当初想接触下mongodb数据库,找个例子学习下,后来改着改着就面目全非了.后台和数据库重构,前端增加了登录注册功能,仅保留了博客设置页面,但是也优化了. 一.功 ...

  2. 基于node.js的博客搭建

    一个博客应当具备哪些功能? 前台展示 点击下一页,可以点击分类导航. 可以点击进入到具体博文页面 下方允许评论.显示发表时间.允许留言分页. 右侧有登录注册界面. 后台管理 管理员账号:登陆后看到页面 ...

  3. Node.js开发博客系统

    数据库设计 用户表: id phone password nickname head_img personal_sign level_id create_time update_time is_del ...

  4. hexo —— 简单、快速、强大的Node.js静态博客框架

    hexo是一款基于Node.js的静态博客框架.目前在GitHub上已有1375 star 和 219 fork. 特性 风一般的速度 Hexo基于Node.js,支持多进程,几百篇文章也可以秒生成. ...

  5. 在阿里云ECS CentOS7上部署基于MongoDB+Node.js的博客

    前言:这是一篇教你如何在阿里云的ECS CentOS 7服务器上搭建一个个人博客的教程,教程比较基础,笔者尽可能比较详细的把每一步都罗列下来,包括所需软件的下载安装和域名的绑定,笔者在此之前对Linu ...

  6. node.js开发博客系统---前端项目搭建(一)

    Express: https://github.com/petecoop/generator-express 安装node.js和npm 执行: npm install -g yo npm insta ...

  7. node.js 开发博客系统

    1. 安装yoman :npm install -g yo 2. 安装 generator-express :npm install -g generator-express 3. 安装 bower ...

  8. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十七 ║Vue基础:使用Vue.js 来画博客首页+指令(一)

    缘起 书说前两篇文章<十五 ║ Vue前篇:JS对象&字面量&this>和 <十六 ║ Vue前篇:ES6初体验 & 模块化编程>,已经通过对js面向对 ...

  9. 原生js添加博客点击鼠标出小心心效果~~

    昨天刚申请成功JS权限,心血来潮想添加点东西,记得之前看到别人家博客首页点击鼠标的时候会出现炫酷的 “小心心”,自己也来搞一个.没有用jquery啥的框架,原生js写起来麻烦了点,不过主要是怕博客首页 ...

随机推荐

  1. 快速激活最新JetBrains公司系列产品包括最新的phpstorm10

    快速激活最新JetBrains公司系列产品包括最新的phpstorm10 IntelliJ IDEA开源社区 提供了如下通用激活方法: 注册时选择License server 然后输入框填写:http ...

  2. 百度经验:Win10查看已存储WiFi密码的两种方法

    方法一:网络和共享中心查询 具体步骤可以参考:Win10查看WIFI密码的方法 方法二:命令提示符查询 1.右键单击开始按钮,选择“命令提示符(管理员)” 2.输入如下命令(下图①号命令): nets ...

  3. C++ 调节PCM音频音量大小

    在用解码器解码音频数据得到PCM音频数据块之后,可以在将数据送给声卡播放之前调节其音量大小,具体的实现函数如下: void RaiseVolume(char* buf, UINT32 size, UI ...

  4. scandir函数详解

    scandir函数详解2009-10-30 10:51scandir函数:读取特定的目录数据表头文件:#include <dirent.h>定义函数:int scandir(const c ...

  5. Java中如何去除List中的重复的值?

    package com.test; import java.util.*; public class Test { /** AAAA AAAA BBBB BBBB CCCC CCCC CCCC CCC ...

  6. Fiddler抓包8-打断点(bpu)【转载】

    本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/fiddler/ 前言 先给大家讲一则小故事,在我们很小的时候是没有手机的,那时候跟女神 ...

  7. 第一章:1-22、长度为100字节的应用层数据交给运输层传送,需加上20字节的TCP首部。再交给网络层传送,需加上20字节的IP首部。最后交给数据链路层的以太网传送,加上首部和尾部18字节。试求数据的传输效率。  若应用层数据长度为1000字节,数据的传输效率是多少?

    <计算机网络>谢希仁著第四版课后习题答案答: 数据长度为100字节时 传输效率=100/(100+20+20+18)=63.3% 数据长度为1000字节时, 传输效率=1000/(1000 ...

  8. Laravel向视图传递变量的两种方法

    //方法一 return view('home.user')->with('datas', $datas); //方法二 return view('home.user.my-indent',co ...

  9. 可视化web日志分析工具Logstalgia

    https://blog.csdn.net/zrools/article/details/47250661

  10. MSSQL-字符串分离与列记录合并成一行混合使用

    一般我们在数据库的表字段存储字典Id,如果有多个的话一般是用,或分隔符分隔(12,14),列表显示的时候是显示字典名,那如果要在数据库将字典Id转成用户看得懂的字典名,该怎么办呢? 我们这时候可以结合 ...