NodeJS-糗事百科段子爬虫
来源:互联网 发布:淘宝网买东西怎么付款 编辑:程序博客网 时间:2024/05/17 01:45
第一次爬糗事百科的段子也是不容易呀,第一次使用http的get模式去爬,发现爬不到数据。估计是被反爬了吧。最后采用request模块来做,之后就成功爬取到糗事百科上的html网页数据了。不过只是爬到原始的HTML数据而已,与浏览器上直接观看的html源码还是有点区别的。因为浏览器上的代码是经过ajax数据更改过的。所以一开始我爬到数据之后,在浏览器上找到相应的id后就获取了。结果发现什么数据都没有。之后将网页代码打印出来后,发现根本和浏览器代码是不相同的。
浏览器的代码:
真实上爬取到的代码:
所以这里面要想获取到数据的话,还是需要在真实爬取到的源码上找到它的类或id才能够获取得到数据呀。
要注意的细节就基本上完成,上代码:
var request = require('request');var cheerio = require('cheerio');var path = require('path');var fs = require('fs');var http = require('http');var run = function(Url,startNum,Sum){ var page={ i:startNum,//当前的页数 sum:startNum+Sum,//总的爬取页数 url:Url,//当前爬取的url地址 newUrl:null,//新组装的url地址 data:null,//页面爬取的html内容 timer:null,//定时器,控制爬虫的结束 ws:null,//文件操作变量 } //爬取入口函数 this.fetchPage = function(){ console.log(page); startRequest(page.url+page.i); } //开始爬取数据函数 function startRequest(x) { request(x, function (error, response, body) { console.log(error); if (!error && response.statusCode == 200) { //console.log(body); page.data = body; //console.log(page.data); if(page.timer==null){ page.ws = fs.createWriteStream('output.txt','utf-8'); page.timer = setInterval(nextPage,1000); } } }); function nextPage(){ //控制爬多少篇文章 if (page.i <= page.sum) { acquireData(); console.log('当前爬取的页数: '+page.i); //下一篇文章的url page.newUrl = page.url + ++page.i; startRequest(page.newUrl); } else{ clearInterval(page.timer); } } function acquireData(){ //console.log("html:"+page.data); //cheerio插件相当于jq的功能 var $ = cheerio.load(page.data); //看页面可以知道,当前的图片有class=test,将它们当数组存进meizi变量 var duanzi = $('.content-text div span').toArray(); var len = duanzi.length; for(var i=0;i<len;i++){ console.log("完成:"+i+" "+duanzi[i].children[0].data); page.ws.write(duanzi[i].children[0].data); } console.log("第"+page.i+"页全部爬取完毕!"); } }}var start = new run('http://www.qiushibaike.com/text/page/',1,35);start.fetchPage();
运行代码的结果如下:
0 0
- NodeJS-糗事百科段子爬虫
- 爬虫-糗事百科段子
- 【网络爬虫】爬取糗事百科段子
- python 爬虫 爬取糗事百科段子
- Python 爬虫实战 - 糗事百科段子
- 爬虫第四战爬取糗事百科搞笑段子
- Python爬虫 爬取糗事百科段子
- python爬虫-糗事百科段子内容
- Python爬虫爬取糗事百科段子
- Python爬虫 爬取糗事百科段子
- Python爬虫实战一之爬取糗事百科段子
- pythpn学习の爬虫爬取糗事百科热门段子
- Python爬虫实战一之爬取糗事百科段子
- 网络爬虫——爬取糗事百科笑料段子
- Python爬虫实战(1):爬取糗事百科段子
- Python爬虫实战(1):爬取糗事百科段子
- Python3.4简单爬虫实现之抓取糗事百科段子
- Python爬虫实战一之爬取糗事百科段子
- 《Android群英传》读书笔记5.Android Scroll分析
- JS获取浏览器高度和宽度
- Python3 百度图片 美女 下载 爬虫 多线程
- Android程序员学PHP开发(17)-callback-readdir-is_dir-foreach-glob-PhpStorm
- 使用iso文件创建本地安装源 - centos7环境
- NodeJS-糗事百科段子爬虫
- 基于IAP和Keil MDK的远程升级设计
- [solr]查询权重排序
- 超详细Linux搭建Android开发环境
- 栈的应用——四则表达式
- Cookie基础知识
- 设置ListBox选中项的背景颜色
- JavaScript_异常
- dyld: Library not loaded