最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

node.js實(shí)現(xiàn)博客小爬蟲(chóng)的實(shí)例代碼

 更新時(shí)間:2016年10月08日 10:31:17   作者:蛋炒飯  
這篇文章通過(guò)實(shí)例代碼來(lái)給大家介紹如何利用node.js實(shí)現(xiàn)博客小爬蟲(chóng),有需要的朋友們可以直接運(yùn)用文中給出的實(shí)例代碼來(lái)進(jìn)行實(shí)踐學(xué)習(xí),感興趣的朋友們下面來(lái)一起看看吧。

前言

爬蟲(chóng),是一種自動(dòng)獲取網(wǎng)頁(yè)內(nèi)容的程序。是搜索引擎的重要組成部分,因此搜索引擎優(yōu)化很大程度上就是針對(duì)爬蟲(chóng)而做出的優(yōu)化。

這篇文章介紹的是利用node.js實(shí)現(xiàn)博客小爬蟲(chóng),核心的注釋我都標(biāo)注好了,可以自行理解,只需修改url和按照要趴的博客內(nèi)部dom構(gòu)造改一下filterchapters和filterchapters1就行了!

下面話不多說(shuō),直接來(lái)看實(shí)例代碼

var http=require('http');
var Promise=require('Bluebird');
var cheerio = require('cheerio');
var url='http://www.immaster.cn';//博客地址
function filterchapters1(html) {//解析文章鏈接
 var $ =cheerio.load(html);
 var post=$('.post');
 
 var content=[];
 post.each(function (item) {
 
 var postid=$(this).find('.tit').find('a').attr('href');
 
 content.push(postid);
 })
 return content;
}
function filterchapters(html) {//解析每個(gè)文章內(nèi)的內(nèi)容
 var $ =cheerio.load(html);
 var tit=$('.post .tit').find('a').text();
 var postid=$('.tit').find('a').attr('href');
 var commentnum=$('.comments-title').text();
 commentnum=commentnum.trim();
 // commentnum=commentnum.replace('\n','');
 var content={tit:tit,url:postid,commentnum:commentnum};
 return content;
}
function getid(url){//爬取首頁(yè)文章鏈接
 return new Promise(function (resolve,reject) {
 http.get(url,function (res) {
 var html = '';
 res.on('data',function(data) {
 html+=data;
 });
 res.on('end',function () {
 var content=filterchapters1(html)
 resolve(content);
 
 })
}).on('error',function () {
 reject(e);
 console.log('抓取出錯(cuò)!')
 })
})
}
function getpageAsync(url) {//爬取單個(gè)頁(yè)面內(nèi)容
 return new Promise(function (resolve,reject) {
 console.log('正在爬取……'+url)
 http.get(url,function (res) {
 var html = '';
 res.on('data',function(data) {
 html+=data;
 });
 res.on('end',function () {
 resolve(html);
 
 })
 }).on('error',function () {
 reject(e);
 console.log('抓取出錯(cuò)!')
 })
 })
}
getid(url)
 .then(function(postid){
 return new Promise(function (resolve,reject) {
 var pageurls=[];
 postid.forEach(function (id) {
 pageurls.push(getpageAsync(id));
 })
 resolve(pageurls);
 })
 })
 .then(function(pageurls){
 return new Promise.all(pageurls);//讓promise對(duì)象同時(shí)開(kāi)始運(yùn)行
 })
 .then(function (pages) {
 var coursesData=[];
 pages.forEach(function (html) {
 var courses=filterchapters(html);
 coursesData.push(courses);
 })
coursesData.forEach(function(v){
 console.log('標(biāo)題:'+v.tit+"\n地址:"+v.url+"\n評(píng)論:"+v.commentnum)
 })
 })

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家學(xué)習(xí)或者使用node.js實(shí)現(xiàn)爬蟲(chóng)能有所幫助,如果有疑問(wèn)大家可以留言交流。

相關(guān)文章

  • Node.js爬取豆瓣數(shù)據(jù)實(shí)例分析

    Node.js爬取豆瓣數(shù)據(jù)實(shí)例分析

    這篇文章通過(guò)實(shí)例給大家詳細(xì)分析了Node.js爬取豆瓣數(shù)據(jù)的過(guò)程以及具體方法步驟,有興趣的朋友可以參考學(xué)習(xí)下。
    2018-03-03
  • Node.js實(shí)現(xiàn)的簡(jiǎn)易網(wǎng)頁(yè)抓取功能示例

    Node.js實(shí)現(xiàn)的簡(jiǎn)易網(wǎng)頁(yè)抓取功能示例

    這篇文章主要介紹了Node.js實(shí)現(xiàn)的簡(jiǎn)易網(wǎng)頁(yè)抓取功能示例,本文使用了PhantomJS、node-phantomjs等庫(kù)實(shí)現(xiàn),需要的朋友可以參考下
    2014-12-12
  • nodejs+websocket實(shí)時(shí)聊天系統(tǒng)改進(jìn)版

    nodejs+websocket實(shí)時(shí)聊天系統(tǒng)改進(jìn)版

    這篇文章主要介紹了nodejs+websocket實(shí)時(shí)聊天系統(tǒng)的改進(jìn)版,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • window10下node使用管理神器NVM安裝配置超詳細(xì)步驟

    window10下node使用管理神器NVM安裝配置超詳細(xì)步驟

    nvm全稱Node Version Manager是 Nodejs 版本管理器,它讓我們能方便的對(duì) Nodejs 的版本進(jìn)行切換,nvm 的官方版本只支持 Linux 和 Mac, Windows 用戶,可以用 nvm-windows,這篇文章主要介紹了window10下node使用管理神器NVM安裝配置超詳細(xì)步驟,需要的朋友可以參考下
    2023-01-01
  • Nest.js中使用HTTP五種數(shù)據(jù)傳輸方式小結(jié)

    Nest.js中使用HTTP五種數(shù)據(jù)傳輸方式小結(jié)

    本文主要介紹了Nest.js中使用HTTP五種數(shù)據(jù)傳輸方式小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • node.js實(shí)現(xiàn)pdf與圖片互轉(zhuǎn)代碼示例

    node.js實(shí)現(xiàn)pdf與圖片互轉(zhuǎn)代碼示例

    因工作需求,記錄一次如何在Node中pdf與圖片互轉(zhuǎn)各種操作,這篇文章主要給大家介紹了關(guān)于node.js實(shí)現(xiàn)pdf與圖片互轉(zhuǎn)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • node.js文件上傳處理示例

    node.js文件上傳處理示例

    這篇文章主要介紹了node.js文件上傳處理的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下。
    2016-10-10
  • NodeJS中的命令行程序、工程目錄、NPM

    NodeJS中的命令行程序、工程目錄、NPM

    使用NodeJS編寫的東西,要么是一個(gè)包,要么是一個(gè)命令行程序,而前者最終也會(huì)用于開(kāi)發(fā)后者,一般我們會(huì)同時(shí)提供命令行模式和API模式兩種使用方式,并且我們會(huì)借助三方包來(lái)編寫代碼,NPM是隨同NodeJS一起安裝的包管理工具,能解決NodeJS代碼部署上的很多問(wèn)題
    2023-11-11
  • NodeJS通過(guò)魔術(shù)封包喚醒局域網(wǎng)計(jì)算機(jī)實(shí)例

    NodeJS通過(guò)魔術(shù)封包喚醒局域網(wǎng)計(jì)算機(jī)實(shí)例

    這篇文章主要為大家介紹了NodeJS通過(guò)魔術(shù)封包喚醒局域網(wǎng)計(jì)算機(jī)代碼實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • node事件循環(huán)中事件執(zhí)行的順序

    node事件循環(huán)中事件執(zhí)行的順序

    在瀏覽器環(huán)境下我們的js有一套自己的事件循環(huán),同樣在node環(huán)境下也有一套類似的事件循環(huán)。本文就詳細(xì)的來(lái)介紹一下,感興趣的可以了解一下
    2021-08-08

最新評(píng)論

保山市| 格尔木市| 嫩江县| 肇州县| 阿瓦提县| 枣强县| 乌什县| 阿拉善右旗| 黎城县| 上犹县| 阿勒泰市| 鄢陵县| 枝江市| 闽清县| 鹰潭市| 彰化县| 新沂市| 开平市| 于田县| 澎湖县| 柘荣县| 鹤岗市| 巢湖市| 无为县| 福贡县| 犍为县| 凯里市| 马龙县| 卓资县| 庄河市| 阿图什市| 东海县| 南木林县| 梁河县| 兰坪| 湟中县| 灵山县| 龙井市| 盐山县| 澳门| 苍山县|