Node.js 读取博客首页并获得文章标题

简介:

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版服务器例子
浅滩
复制代码

 








本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/xiandedanteng/p/7535688.html,如需转载请自行联系原作者





相关文章
|
11天前
|
JavaScript
【vue】 vue2 修改网页标题和图标logo、全局路径、跨域vue.config.js
【vue】 vue2 修改网页标题和图标logo、全局路径、跨域vue.config.js
15 0
|
26天前
|
JavaScript 前端开发
基于Vue.js的简易博客系统设计与实现
基于Vue.js的简易博客系统设计与实现
8 0
|
1月前
|
JavaScript
当当网首页——JS代码
当当网首页——JS代码
10 1
|
1月前
编程笔记 html5&css&js 006 HTML文本:标题
编程笔记 html5&css&js 006 HTML文本:标题
|
6月前
|
JavaScript 前端开发 Windows
VScode的注释和标题,标签,img的src属性(如何网页上插入图片)(Mac如何开启js控制台)(如何免费复制网页中的文字)
VScode的注释和标题,标签,img的src属性(如何网页上插入图片)(Mac如何开启js控制台)(如何免费复制网页中的文字)
|
2月前
|
前端开发
【Node】一键生成博客标题图片
还在为写文章时找不到标题图片而困扰吗?举个例子,CSDN的博客文章如果你不给他图片的话,那么它会按照一些默认的标签图片作为你的文章封面,例如下面这样。
29 7
|
8月前
|
前端开发 NoSQL JavaScript
node-blog:用 node 搭建的个人开源博客
node-blog:用 node 搭建的个人开源博客
68 0
|
4月前
|
前端开发 关系型数据库 API
使用Next.js 13、Prisma、Postgresql 和 NextAuth 的全栈博客
使用Next.js 13、Prisma、Postgresql 和 NextAuth 的全栈博客
120 0
|
7月前
|
JavaScript 前端开发 UED
标题:Vue.js中的`props`:组件通信的桥梁
Vue.js是一款流行的JavaScript框架,以其组件化的开发方式而著称。在Vue.js中,`props`是组件之间进行通信的关键机制之一。在本博客中,我们将深入研究`props`的概念、用法、传递数据的方式以及如何利用它来构建灵活和可复用的组件。
37 0
|
10月前
|
NoSQL JavaScript 前端开发
【Node.js实战】一文带你开发博客项目之Koa2重构(实现session、开发路由、联调、日志)
【Node.js实战】一文带你开发博客项目之Koa2重构(实现session、开发路由、联调、日志)
193 0