麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

NodeJS-糗事百科段子爬蟲

2019-11-11 05:10:29
字體:
來源:轉載
供稿:網友

第一次爬糗事百科的段子也是不容易呀,第一次使用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();

運行代碼的結果如下:


上一篇:湊算式

下一篇:鏈表 —— 雙向循環

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 91成人在线免费 | 久久精品一区二区三区四区五区 | 日本在线一区二区 | 国产毛毛片一区二区三区四区 | 成人毛片免费视频 | 羞羞的视频免费在线观看 | 日本a级一区 | 国产成人在线综合 | 欧美大屁股精品毛片视频 | 日韩一级电影在线观看 | 日本中文视频 | 免费国产自久久久久三四区久久 | a网在线| 深夜视频福利 | 最新欧美精品一区二区三区 | 久久爽久久爽久久av东京爽 | 国产一国产一级毛片视频 | 国产精品一区二区三区在线播放 | 黄污网站在线观看 | 国产小视频一区 | 777sesese| 久久久综合久久久 | 狠狠干91 | 激情夜色 | 日本在线免费观看 | 91美女视频在线观看 | 最近国产中文字幕 | 国产精品视频亚洲 | 亚洲第一页综合 | 久久久一区二区三区四区 | 国产精品麻豆一区二区三区 | 亚洲成人激情在线 | 国产亚洲综合一区二区 | 中文字幕欧美日韩 | 色婷婷av一区二区三区久久 | 国产99久久精品一区二区300 | 亚洲热线99精品视频 | 国产精品片一区二区三区 | 99精品视频免费看 | 国产妇女乱码一区二区三区 | 一级黄色片武则天 |