延续上一篇,想把自己博客的文档标题利用Node.js的request全提取出来,于是有了下面的初哥爬虫,水平有限,这只爬虫目前还有点瘸腿,请看官你指正了。
// 内置http模块,提供了http服务器和客户端功能var http=require("http");// 内置文件处理模块var fs=require('fs');// 创建一个将流数据写入文件的WriteStream对象var outstream=fs.createWriteStream('./1.txt');// 请求参数JSONvar options;// 请求并获得数据var req;// 存储文章题目的数组var texts=[];var index=1;function findTitlesInPage(pageNumber){console.log("开始读取第"+pageNumber+"页");options={hostname:'',// 这里别加http://,否则会出现ENOTFOUND错误port:80,path:'/xiandedanteng/p/?page='+pageNumber,// 子路径method:'GET',};req=http.request(options,function(resp){resp.setEncoding('utf8');resp.on('data',function(chunk){// 匹配链接var reg=/<a\s(?:\w*?=".*?"\s)*(?:href=")(.*?)(?:")(?:\s\w*?=".*?")*>(.+?)<\/a>/gvar res;while((res = reg.exec(chunk)) != null){var href=res[1];var regHref=/http:[/][/][/]xiandedanteng[/]p[/](\d+).html/g;if(href.match(regHref)){var text=res[2];texts.push(text);console.log("text="+text + '\n');outstream.write(text + '\n','utf8');}}});});// 超时处理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();// 51页调完为止if(index<=51){ index++;console.log('继续第'+index+'页');start(index);}}// 包一层函数function start(i){findTitlesInPage(i);}// 开始遍历start(index);
输出的文本:
AngularJS的稍复杂form验证AngularJS的form状态变色AngularJS的简单表单验证AngularJS的表单验证提交示例AngularJS的ng-repeat显示表格AngularJS的ng-repeat的内部变量AngularJS的ng-repeat显示属性名和属性值AngularJS的ng-class示例AngularJS的Foreach循环示例AngularJS的控制器示例HTML5 Canvas 奔跑的小狗出自 HTML4 规范的可用颜色字符串值列表(常用颜色名称及对应的十六进制值)HTML5 Canvas 八星聚义动态效果HTML5 Canvas 动态效果原理性显示HTML5 Canvas 绘制澳大利亚国旗HTML5 Canvas 绘制新西兰国旗HTML5 Canvas 绘制加拿大枫叶旗HTML5 Canvas 绘制英国国旗HTML5 Canvas 绘制星条旗HTML5 Canvas 绘制五星红旗01.Hello Node.js原来,多年以来,我一直是个curl程序员人工智能真NB?何不去炒股?用MyEclipse CI版创建一个SpringBoot程序构建Spring Boot程序有用的文章惰性和锐气从git下载一个工程向git库提交代码出现”There are no staged files"怎么办?在MyEclipse上安装GIT插件EGitHTML5 Canvas 画钟表Html5 Canvas之arc函数图示详解HTML5 Canvas 六角光阑动态效果新技术,复杂技术和难点意味着什么转帖:励建书:数学有助于大众理性思维的培养HTML5 Canvas 描画渐开线HTML5 Canvas 动态勾画等速螺线HTML5 Canvas 用requestAnimation取代setInterval本事是用辛勤劳动换来浅水滩HTML5 Canvas 龟羊赛跑HTML5 Canvas 绘制太极图HTML5 Canvas 绘制六叶草HTML5 Canvas 绘制旋转45度佛教万字HTML5 Canvas 绘制五角星HTML5 Canvas 绘制佛教万字老骥伏枥 志在千里常见CSS两栏式布局浮动广告窗示例为什么要点两下才能删除一个li节点 原来是空白节点作怪点击页面li显示li中文字Node.js 极简入门Helloworld版服务器例子浅滩Nodejs 模拟telnetNode.js 替换文档内容一个人真的不能轻易地妥协或将就Node.js 把图片流送到客户端Node.js的静态页面想通过jQuery的Ajax函数调用远程服务的措施无效Node.js静态页面展示例子2AngularJS的$http本地运行能正常获得数据,但放Nodejs的public目录下作为静态页面,再使用$http的get方法获得服务器数据就不行了Node.js和C++有关的博文链接给java类加static修饰编译器会说什么?AngularJS中Route例子AngularJS中自定义过滤器AngularJS中选择样式AngularJS中,<span class="bluetext" ng-bind="ctrl.user.name|uppercase"></span>和{{ctrl.user.name|uppercase}}是等价的,但不等于<span class="bluetext" ng-bind="ctrl.user.name|uppercase"/>AngularJS的过滤器示例AngularJS的添加操作和列表操作人在做,天在看json lib 2.4及其依赖包下载AngularJS取得后台Jason数据显示在页面上Node.js 网页瘸腿爬虫初体验Node.js 读取博客首页并获得文章标题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异常第一个Swift程序Hello World不错的HTML5/CSS3学习网站永远的飞翔 张广天科学的发展不是靠这个或那个发现,也不是靠撰写或发表一篇论文,而是靠热忱的研究和大量的工作。妙计想了一千五,明朝依旧卖豆腐ichartjs 制作的图表在cmd窗口输入命令遇到You must run this command from a command prompt with administrator privilege怎么办?好工具MyEclise CI下载JDK8 下载地址 /technetwork/java/javase/downloads/jdk8-downloads-2133151.htmljava类中,成员变量赋值第一个进行,其次是静态构造函数,再次是构造函数判断事业职业的标准个人常用软件收集整理同样是网络,有人把它当娱乐消遣,有人把它当知识财富来源你在工作中有拼命过吗?C# 将链表存入二进制文件及读取二进制文件得到链表示例C# 将long类型写入二进制文件用bw.Write(num);将其读出用long num= br.ReadInt64();以悠悠之生,立一技之长,而贞静自守人生,就是一个个未竟之志叠起来的C#中异常处理和Java的区别C# 解析迅雷链接成正常的Http链接AngularJS的Hello World第一个AngularJS Sample稳定,实际是暴风雨来临前的死寂安装惠普M1136打印机一直处于“新设备已连接”状态怎么办?技术仅仅是一个工具如果美国人选出了希特勒让资源管理器不显示最近常用文件夹票房实际是屌丝血为什么读了很多书,还是过不好这一生?抱怨就像呕吐绝大多数人努力程度之低,根本轮不上拼天赋ZT:与其怨天尤人,不如全力以赴;若想改变世界,你必须先从改变自己开始!归家三侠击杀的是真太后还是假太后“阿基里斯与乌龟”的终结性思考这个世界本来的样子安装 xampp-win32-5.6.28-1-VC11-installer.exe 失败Seven times have I despised my soul 《我曾七次鄙视自己的灵魂》Youth is not a time of life, it is a state of mind.对于过去所犯的错误,最好的道歉是在将来做正确的事使用UltraISO刻录自己的音乐CD步骤为什么一个目录里放超过十个Mp4文件会导致资源管理器和播放程序变卡变慢?用Perl发送邮件小例子用df命令显示磁盘使用量和占用率。三个JS函数闭包(closure)例子可编辑单元格版本二$.ajax里一个中文全角逗号引发的惨案ZT:150条毒鸡汤People seldom do what they believe in. They do what is convenient, then repent.当JQuery的$.ajax函数请求不存在的url时,从error函数里是否能得知发生什么了?总结下JavaWeb应用里正确显示中文需要的设置1.2 文本域(含可编辑表格实现)JS手册目录1.1 文本框JS传中文到后台需要的处理SQL语句里怎么获得当前年份(MySQL数据库)将option添加到select框鼠标移动到图片上切换到另一张图片,移出时又切回来用JQuery给图片添加鼠标移入移出事件Java日期时间处理常用方法如果觉得职业看不到头,趁早换工作吧C# 线程中更新ListView某单元格导致闪烁问题的解决转帖:HttpStatusCode状态说明C#版C# Ftp方式下载文件(无用户认证方式,支持断点续传)转帖:win10 环境下局域网 搭建FTP服务器C#中的抽象类和子类C#报错"线程间操作无效: 从不是创建控件“XXX”的线程访问它"--解决示例C# Http方式下载文件到本地类改进版C# Http方式下载文件到本地C#中如何让ListView控件点击选中整行C#中toolStrip或statusStrip遮挡了SplitContainer怎么办?C# 判断字符串是否符合十六进制,八进制,二进制和十进制整数格式的正则表达式C#中二进制,八进制,十六进制到十进制的相互转换一.引子:越来越深的疑问ZT:三十个好习惯Mac装Win10后没有无线网络的处理U盘容纳不了大于4G的文件比如ISO文件咋办?经典游戏“大富翁4”存档文件修改器Rich4Editor下载向C#的选项卡中添加自定义窗体C#对二进制文件的特定位置进行读写小结抗战剧中最耐看的《我的团长我的团》,最后结尾依然有神剧的影子天地常在 锐气永存人,应该过自己想要的生活世界大部分的变化变革是一直有人在问为什么不能做得更好。寻找生命的方向终究要靠自己预测未来的环境,提前做出改变从国与国到人与人VI使用技巧技术人的生命之源在于绝不固步自封而不断进取的精神在CentOS下企图整合Apache和Tomcat依然失败在CentOS6.5上安装Tomcat7又一次遇到Data truncation: Data too longData truncation: Data too long问题查看Linux上MySQL版本信息很多人终身一事无成查看Linux操作系统版本使用yum方式在centOS上安装mysql安全驾驶技巧java -jar xxx.jar[转帖]鲍鹏山:我们培养了很多高学历的野蛮人perl的几个小tips上传项目至svn服务器,从svn上获取项目SpringMVC处理MYSQL BLOB字段的上传Linux中MySQL数据库max_allowed_packet的调整错误The request sent by the client was syntactically incorrect ()的解决爪哇国新游记之三十一----日期时间与字符串间的转化往MySQL数据库datetime类型字段中插入数据库的当前时间如果你想得到更多的报酬 得到更大的发展空间MySQL的左外连接超越的四个阶段MySQL日期函数的用法几则JS杂技之无中间变量的值交换方式JDBC连接MySQL数据库的示例代码ZT:CSS实现水平|垂直居中漫谈今天整理了下所有博文关于后台数据库正常存储中文通过Ajax方式传递到前台变成问号的处理出现异常时直接把e输出比输出e.getMessage()好得多往服务器上传个文件只要不到10毫秒,往数据库写条记录却要10秒使用struts的logic:iterate标签遍历列表时得到显示序号给div加上背景图片一次性上传多个文件到服务器端(一)Another MySQL daemon already running with the same unix socket的解决如何消除MyEclipse导入jQuery库后出现的错误标记启用CentOS6.5 64位安装时自带的MySQL数据库服务器启用CentOS6.5 64位安装时自带的MySQL如何修改MyEclipse项目的web context-root入门容易深入难首次用U盘安装CentOSVMware安装Linux第一天VMware安装的相关文章jQuery的$.get和$.ajax函数对比1.7 提交按钮编译mod_jk.so配置Tomcat6的管理用户在CentOS6.5上安装Tomcat6转载:如何运用VI编辑器进行查找替换打开Apache自带的Web监视器查看CentOS上Apache位置,版本,停止,启动转帖:解决jquery.js在myeclipse中报错的问题T450的Fn lock移民,不应该是走投无路后的选择门槛低的行业看天赋,门槛高的行业看毅力UE把环境变量Path改了成功者的特点 VS 失败者的特点成就连自己都惊讶的未来转载:JAVA中获取项目文件路径ANT安装及配置Java环境变量设置Win7安装软件,界面上中文显示乱码的解决方案Some perl tips程序员的价值转载:不投简历,如何获得月薪2万的工作怪异恼人的java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream问题的解决Spring3的quartz定时任务HTML模板SpringMVC 下载XLS文档的设置SpringMVC 文本文件下载的配置用JS怎么判断上传文件控件是否未选择文件SpringMVC文件上传的配置JS里取前天,昨天和今天奇怪也哉!做一个WebApp居然遇到了FF浏览器进不去某页的问题。一个男人常想起的问题及其神回复厕所老鼠和粮仓老鼠爪哇国新游记之二十八----从url指定的地址下载文件到本地勿问成功的秘诀为何,且尽全力做你应该做的事吧爪哇国新游记之二十七----数组的二分查找爪哇国新游记之二十六----迷宫寻路爪哇国新游记之二十五----图及其遍历查找爪哇国新游记之二十四----二叉树爪哇国新游记之二十三----算术表达式计算求值爪哇国新游记之二十二----排序判断重复时间复杂度为2n的位图法所有的胜利,与征服自己的胜利比起来,都是微不足道。Acer商祺x4610安装及使用谈《黑社会之龙城岁月》中之大D不动脑子的码农,就只能做一辈子码农.关于中年危机使用MyEclipse创建可执行jar如何获得一个网站的图标在自己认定的道路上顶着风雨坚持爪哇国新游记之三十----十九个正则表达式示例为Linux上FireFox安装Flash插件爪哇国新游记之二十九----访问URL获取输入流然并卵Linux下的定时任务Crontab两段用来启动/重启Linux下Tomcat的Perl脚本JavaScript中给二维数组动态添加元素的质朴方法ZT:成熟是一种明亮而不刺眼的光辉如何Enable FireFox里的Java Plugin将App发布到WasLiberty的较稳妥方法记一个发HTML格式邮件的问题有些工作,做一辈子也不会成功论本事技术的变迁如同水火般无情使用JRadioButton 示例使用JTextArea示例一次帮人装无线路由器的经历如何修改JComboBox的宽度实现淡入淡出效果的组件,继承自JComponent以JPanel为基础实现一个图像框扩展JButton实现自己的图片按钮箴言录4月22日搜集整理一些Cron表达式例子1.6 文件上传组件问题 “No mapping found for HTTP request with URI [/rbiz4/uploadFile.html]” 的解决转载:知其所以然(以算法学习为例) 作者: 刘未鹏给知识分分等级1.5 下拉列表框比昨天做得更好一点1.4 复选按钮信鬼神 信风水 信命运 皆因无力及妄念所致字体颜色代码表1.3 单选按钮个人是时代的一朵浪花转载:XPath基本语法爪哇国新游记之三十四----Dom4j的XPath操作常去的论坛今天两个传统行业的坛友要下岗了文明3地图之一--两个大岛混日子容易 成就一番事业不容易好网站:字体转换器在线转换 /九死一生和十死不生中国为何总是在轮回拖延,懒惰和没有条理是大多数人不能相对成功的关键因素错误:“The requested resource () is not available.”的处置坚定移民的原因图难于其易;为大于其细。天下难事,必作于易,天下大事,必作于细。JavaScript取指定时区的时间用Java取指定时区的时间 北京时间,纽约时间,班加罗尔时间使用Java取得本机IP和机器名不删除记录的表CRUD的常见处置如果真的不知道将来要做什么爪哇国新游记之三十三----目录文件操作一个类似股票看板的自刷新页面的制作以前积攒的一个用Java程序生成验证码的代码清华学霸的成绩单如果一个人怀疑读书奋斗的作用一图说明英语介词恼人的The absolute uri: /jsp/jstl/core cannot be resolved...错误,无奈用Struts的bean:write替代了JSTL的C:out深入学习和练习,使之更为精湛。为了变得更加擅长,而去挑战吧。这样才能培养出“个人专长”.时间较宽裕的时候,选择有挑战性的路500 服务器内部错误一个简单的JS函数,用于判断文本是否数字那一刻,我瞥见了内心中渺小的自己爪哇国新游记之二----用于计算三角形面积的Point类和TAngle类爪哇国新游记之一----第一个类Cube有时候,人生中最艰难的事,反而锻造了最坚强的你。埋怨,只是一种懦弱的表现;努力,才是人生的态度Less is better than never记录一个在制作Swing程序的小怪事Win7双屏显示设置贫穷如癌症 工作是化疗Java读写二进制文件示例当看到某些人月薪十万而觉得郁闷时,看看下面的话会人之不会成为能每一天,努力让梦想更近一些发人深省的算式DOS命令:列出某目录下的所有文本文件名并重定向到某文件换掉Tomcat默认图标Html中的次方符号怎么写MySQL插值语句截短字符串的函数(JS中适用)使用grep进行文本查找使用sed进行文字替换当你的才华还撑不起你的野心时,那你就应该静下心来学习。Think Pad T410键盘溅水有惊无险给DB2某表增加一个自增长列用户登录后返回登录前页面的机制浅析利用有道翻译实现英汉互译从HttpServletRequest获取完整的请求路径一个异常org.apache.jasper.JasperException: java.lang.IllegalStateException: No output folder:的解决XML,dom4j和JavaXPath查找节点值示例使用apache-cxf-2.2.10来制作一个极简版WebService程序最能够体现一个好的程序员的地方给Swing的GUI组件设置前景色和背景色Swing的GUI组件得到焦点一句老话和一句新话职业生涯的遗憾在Fedora8上的Tomcat上deploy一个war在Fedora8上配置Tomcat6.0.37在Fedora8上配置Apache Httpd在Fedora8上安装jdk-7u25-linux-i586.rpm的步骤一些Perl例程(全部手打并执行过)告别码农生涯长途旅行感悟爪哇国新游记之十二----线程创建的两种形式箴言录4月19日Linux下显示硬盘空间的两个命令用rpm安装软件的常用步骤将应用发布到WasLiberty的两种方法Win下执行Swing程序的BAT文件 和 Linux下执行Swing程序的SH文件人是科技的第一生产力。不重视人的价值,不尊重人的需求,不解放人的生产力,必将被互联网时代快速淘汰。Java保存简单偏好的类实用快捷键Win+L=锁屏转载:直面人生的大实话JCheckBox使用示例Out of office 模板JList的基本操作新一日三省吾身爪哇国新游记之十一----用异常控制流程爪哇国新游记之十----异常初相识爪哇国新游记之九----用哈希表进行水果数量计算爪哇国新游记之八----读写文件及数组排序爪哇国新游记之七----使用ArrayList统计水果出现次数爪哇国新游记之六----抽象类爪哇国新游记之五----继承与接口爪哇国新游记之四----用于计算并集交集差集的工具类爪哇国新游记之三----自创动态数组类Carrer Day有感Pinger2Pinger乱码又来捣乱了给MySQL增加一个表示例将来的你 一定会感谢 现在努力拼搏奋斗的自己打通Fedora19的vsftpd服务打通Fedora19的ssh服务N年的经验在别人眼里是怎么看的?perl install-module.pl DateTime 执行无效问题的解决在Linux上使用iptables命令开启对外访问的网络端口Linux上安装Bugzilla4.4小记在Lotus Notes设置邮件转发用Java发送HTML格式邮件测试类(支持中文)MySQL数据源在Spring中的配置DB2数据源在Spring环境中的配置为何你变成了“焦”“郁”“碌(怒)”十一有感Linux中如何开启8080端口供外界访问在Foreda上安装apache-tomcat-7.0.42.tar.gz在简化版Fedora8上安装jdk-7u25-linux-i586.rpm的过程从Ubuntu12.04LTS到Foreda19再到Foreda8在Ubuntu 桌面版 12.04 LTS配置sftp你该如何在世人中脱颖而出有谁还记得童年的梦想转载:什么才是程序员的核心竞争力又见The request sent by the client was syntactically incorrect ()转载:JS进度条Node.js 网页瘸腿爬虫初体验Node.js 读取博客首页并获得文章标题Node.js 使用http客户端向网站请求数据并保存近来这些事Node.js 文件系统流pipe到Http响应流中程序的价值两条Find指令Linux防火墙配置在Foreda8上安装libaio-0.3.105-2.i386.rpmForeda8上安装CMake2.8.1.2用Bluepages来验证intranetId和Password的有效性一个用于发送HTML格式邮件的类在Java程序中做字符串拼接时一定要记得的MessageFormat.format人就这么一辈子,要做自己想做的事情在Fedora10上安装MySQL5.0.18,告捷!#lspci | grep Eth做技术不能人云亦云如何使用FF的Firebug组件中的net工具查看页面元素加载消耗时间在Fedora8上安装使用ActiveMQ5.8越心虚越藏着掖着,越藏越掖越脱节判断一件事有无技术含量的标准主动去平事 别等事找人看了某些蛊惑人心的招聘广告,实在忍不住想要提醒那些跃跃欲奉献的后生们查看Linux版本安装Was liberty之步骤知之者不如好之者 好之者不如乐之者可以改变命运的八个途径世界上最难的是预测未来 最容易的是回顾过去网络应用发布到linux上的web服务器上页面上显示麻将牌式字符的问题Webapp的display-name问题记录:在老XPS1330上安装CentOS7穿越过乌云就是阳光包含Blob字段的表无法Export/Import记一段脚本的诞生一个短小的JS函数,用来得到仅仅包含不重复元素的数组爪哇国新游记之二十一----快算24懒癌,拖延症和互联网毒瘾是现代人的三大精神顽疾爪哇国新游记之二十----将数字转换成中国汉字大写形式爪哇国新游记之十九----使用Stack检查数字表达式中括号的匹配性爪哇国新游记之十八----泛型栈类爪哇国新游记之十七----肺腑之言爪哇国新游记之十六----泛型单链表类爪哇国新游记之十五----泛型动态数组类爪哇国新游记之十四----初试JDBC爪哇国新游记之十三----XML文件读写把系统时间改到以前后,MyEclipse9.1的工程里的JS文件修改完保存但MyEclipse不会将其不会更新。装上了Fedora19如果你不把自己最喜爱的爱好当专业来干,那么就是在浪费时间。将浮点数保持几位小数,尾数舍入的Format函数从Date类型字段获得当日周几的DAYNAME函数下载RADMySQL中不允许使用列别名作为查询条件人生最精彩的不是实现梦想的瞬间MySQL的IF函数遭遇java.lang.NoClassDefFoundError: org/apache/tomcat/PeriodicEventListener在centOS上安装VNCSCP远程拷贝命令Was liberty资料总结罗杰斯:做你喜欢的工作,你会变成个有钱人一个CSV文件解析类在Ubuntu 桌面版 12.04 LTS安装并运行SSH将Tp-link无线路由器桥接到Dlink无线路由器上如何解决Win7将任务栏程序自动分组的困扰安装Ubuntu 桌面版 12.04 LTS 过程之记录Node.js 使用jQuery取得Nodejs http服务端返回的JSON数组示例Node.js 使用jQuery取得Nodejs http服务端返回的JSON对象示例Node.js 本地Xhr取得Node.js服务端数据的例子Node.js node主文件找不到时报出的Error:Cannot find module异常在Fedora8上安装MySQL5.0.45的过程在Win7上安装MySql5.2遇到Write configuration file的解决每一个问题都是一把锁Fedora8上Apache Httpd与Tomcat6初集成爪哇国新游记之三十二----邮件发送Java取得操作系统的临时目录将ByteArrayOutputStream类型变量中的数据存储到文件中[转载]成为优秀程序员的10个有效方法SpringMVC处理MySQL BLOB字段的下载直接修改class文件内容即使是文本会导致App异常,正确方式是修改java再用生成的class替换掉原有的class生命的真谛不在于你呼吸的次数,而在于那些令你无法呼吸的时刻开放Fedora10自带的MySQL5.0.67的对外数据库服务重装上了Fedora8自带的MySQL5.0.45,再试,告捷!!Shell程序荟萃Foreda8上安装Ant1.9.2人这辈子没法做太多的事情更改Apache的首页在Foreda8上试安装Apchehttpd-2.4.6.tar.gz将War发布到Tomcat7上遇到的问题及其解决Tomcat7出现HTTP Status 500 - java.lang.ClassCastException: org.apache.jasper.el.ELContextImpl cannot be cast to org.apache.jasper.el.ELContextImpl的解决使用Spring提供Quartz来实现定时任务不是你不能,而是你对自己的要求太低Java中看今天是星期几,礼拜几Java中取两位小数MySQL的IFNULL函数JS计算本周一和本周五的日期巅峰,不在一万米的边缘一段遍历4X4表格,取出每个单元格内容组合成文本的JS代码
本文转自张昺华-sky博客园博客,原文链接:/xiandedanteng/p/7536024.html,如需转载请自行联系原作者