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写起来麻烦了点,不过主要是怕博客首页 ...
随机推荐
- CSU 2136 ——湖南多校对抗赛 I
2136: 统帅三军! Submit Page Summary Time Limit: 1 Sec Memory Limit: 128 Mb Submitted: 55 ...
- nginx tomcat负载均衡 使用redis session共享
环境准备 1.准备一台nginx服务器 ip192.168.1.133 端口81 安装过程: #首先安装依赖: yum -y install gcc-c++ yum -y install pcre p ...
- PriorityQueue详解(一)
在Java SE 5.0中,引入了一些新的Collection API,PriorityQueue就是其中的一个.今天由于机缘巧合,花了一个小时看了一下这个类的内部实现,代码很有点意思,所以写下来跟大 ...
- fmap为什么可以用function作为第二个参数
看看fmap的类型 fmap :: Functor f => (a -> b) -> f a -> f b 很明显的,第一个参数是function,第二个参数是functor的 ...
- Vue全局异常捕获
之前没注意过这么个小技巧 , 可能在Vue文档里也有 暂时先记下了 方便摘要 Vue全局配置 errorHandler可以进行全局错误收集,我们可以根据这个特性对前端异常做这样的处理:业务错误直接写 ...
- 如何使用python发送邮件
使用python发送邮件,用的是SMTP协议. 因此在qq邮箱中,要设置开启SMTP服务 只要能开启一个就行 在我们执行程序的时候,会发现邮件被发送过来了 在python中还有一个更简单的第三方模块, ...
- python--cProfile,memory_profiler,psutil
关于测试代码用了多长时间,我们之前介绍了timeit.相较于timeit,python中还有一个更加强大的模块,cProfile模块 (提到cProfile,其实还有一个profile,但profil ...
- java1.7集合源码阅读:ArrayList
ArrayList是jdk1.2开始新增的List实现,首先看看类定义: public class ArrayList<E> extends AbstractList<E> i ...
- Python编程学习笔记 随时更新
import urllib.request import re url = 'http://stock.sohu.com/news/' html = urllib.request.urlopen(ur ...
- Servlet4.0 注解不生效解决
当我们创建好一个4.0的servlet 生成的注解大概是这样 name=xxxxx 默认的是不具有效果的 你可以有两种方式 1.去掉属性name,3.0就是这样子的 2.非要有name属性 请加上u ...