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版服务器例子 浅滩
Node.js 读取博客首页并获得文章标题的更多相关文章
- 一个基于Vue.js+Mongodb+Node.js的博客内容管理系统
这个项目最初其实是fork别人的项目.当初想接触下mongodb数据库,找个例子学习下,后来改着改着就面目全非了.后台和数据库重构,前端增加了登录注册功能,仅保留了博客设置页面,但是也优化了. 一.功 ...
- 基于node.js的博客搭建
一个博客应当具备哪些功能? 前台展示 点击下一页,可以点击分类导航. 可以点击进入到具体博文页面 下方允许评论.显示发表时间.允许留言分页. 右侧有登录注册界面. 后台管理 管理员账号:登陆后看到页面 ...
- Node.js开发博客系统
数据库设计 用户表: id phone password nickname head_img personal_sign level_id create_time update_time is_del ...
- hexo —— 简单、快速、强大的Node.js静态博客框架
hexo是一款基于Node.js的静态博客框架.目前在GitHub上已有1375 star 和 219 fork. 特性 风一般的速度 Hexo基于Node.js,支持多进程,几百篇文章也可以秒生成. ...
- 在阿里云ECS CentOS7上部署基于MongoDB+Node.js的博客
前言:这是一篇教你如何在阿里云的ECS CentOS 7服务器上搭建一个个人博客的教程,教程比较基础,笔者尽可能比较详细的把每一步都罗列下来,包括所需软件的下载安装和域名的绑定,笔者在此之前对Linu ...
- node.js开发博客系统---前端项目搭建(一)
Express: https://github.com/petecoop/generator-express 安装node.js和npm 执行: npm install -g yo npm insta ...
- node.js 开发博客系统
1. 安装yoman :npm install -g yo 2. 安装 generator-express :npm install -g generator-express 3. 安装 bower ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十七 ║Vue基础:使用Vue.js 来画博客首页+指令(一)
缘起 书说前两篇文章<十五 ║ Vue前篇:JS对象&字面量&this>和 <十六 ║ Vue前篇:ES6初体验 & 模块化编程>,已经通过对js面向对 ...
- 原生js添加博客点击鼠标出小心心效果~~
昨天刚申请成功JS权限,心血来潮想添加点东西,记得之前看到别人家博客首页点击鼠标的时候会出现炫酷的 “小心心”,自己也来搞一个.没有用jquery啥的框架,原生js写起来麻烦了点,不过主要是怕博客首页 ...
随机推荐
- Mysql事务隔离级
转自:http://xm-king.iteye.com/blog/770721 SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的.低级别的隔离级一般 ...
- d3.js path路径
转自:http://www.d3js.cn/?p=68 svg的path标签被称为”可以组成任何形状的形状” SVG Path可以绘制任何形状的图形,包括矩形,圆形,椭圆,折线,多边形,直线,曲线等. ...
- Mysql 乱码配置
转自: http://www.ha97.com/5359.html 一.登录MySQL查看用SHOW VARIABLES LIKE ‘character%’;下字符集,显示如下: +--------- ...
- ping & traceroute 原理
说明: 忘记从哪里看到的原文了. 不过我应该进行了大刀阔斧的删选. ping 用类型码为0的ICMP发请 求,受到请求的主机则用类型码为8的ICMP回应. ping程序来计算间隔时间,并计算有多少个包 ...
- Charles 和 ProxyDroid 抓取Websocket
环境: 1.android 7 及以下 有root权限 (可以用模拟器) 2.proxydroid-2-7-5 (下载: https://proxydroid.en.uptodown.com/andr ...
- 开发API完成,写个文档
Jira对接Prism开发API指南 部门 证系统运维团队 文档制作人 陈刚() 时间 2017-04-05 版本 第一版 目录 目的... 1 通例:... 1 认证... 2 新建版本单... 2 ...
- 计蒜客 28201.Choosing Ice Cream-gcd (BAPC 2014 Preliminary ACM-ICPC Asia Training League 暑假第一阶段第一场 A)
开始水一波博客 题目链接: A. Choosing Ice Cream 传送门 题意就是n个冰淇淋,骰子有k个面,问你是否能在公平的概率下转几次骰子能确定买哪个冰淇淋. 举个例子,假设我只有一个冰淇淋 ...
- HDU 17新生赛 正品的概率【数论-概率论】
正品的概率 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- 「kuangbin带你飞」专题十八 后缀数组
layout: post title: 「kuangbin带你飞」专题十八 后缀数组 author: "luowentaoaa" catalog: true tags: - kua ...
- 求int最大值以及int二进制
求int最大值:(((unsigned int)(~0))>>1) 求int的2进制串 string str = ""; int iNum = 100; for(int ...