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

nodeJS實現(xiàn)簡單網(wǎng)頁爬蟲功能的實例(分享)

 更新時間:2017年06月08日 07:56:44   投稿:jingxian  
下面小編就為大家?guī)硪黄猲odeJS實現(xiàn)簡單網(wǎng)頁爬蟲功能的實例(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

本文將使用nodeJS實現(xiàn)一個簡單的網(wǎng)頁爬蟲功能

網(wǎng)頁源碼

使用http.get()方法獲取網(wǎng)頁源碼,以hao123網(wǎng)站的頭條頁面為例

http://tuijian.hao123.com/hotrank

var http = require('http');
http.get('http://tuijian.hao123.com/hotrank',function(res){
 var data = '';
 res.on('data',function(chunk){
  data += chunk;
 });
 res.on('end',function(){
  console.log(data);
 })
});

獲得的結(jié)果如下所示:

篩選數(shù)據(jù)

以網(wǎng)頁中的綜藝熱點部分

相關(guān)源代碼如下

  通過分析可知,‘綜藝’模塊與其他模塊都位于<div class="top-wrap">中,其中,綜藝模塊的內(nèi)層div的monkey='zy',綜藝模塊的10條綜藝節(jié)目的信息都位于<div class="poinr clearfix">中,綜藝節(jié)目的名稱位于<span class="point-title">中

cheerio

我們怎么從源代碼中獲取到有用的數(shù)據(jù)呢?首先,nodeJS不支持document對象。如果要使用笨辦法,只能使用正則表達(dá)式來處理

cheerio 是nodejs特別為服務(wù)端定制的,能夠快速靈活的對JQuery核心進(jìn)行實現(xiàn)。它工作于DOM模型上,且解析、操作、呈送都很高效

【安裝】

【使用】

它的使用方法和jQuery相當(dāng)類似,上手非常容易。以獲取綜藝熱度前10名的節(jié)目名稱為例

var http = require('http');
var cheerio = require('cheerio');
http.get('http://tuijian.hao123.com/hotrank',function(res){
 var data = '';
 res.on('data',function(chunk){
  data += chunk;
 });
 res.on('end',function(){
  filter(data);
 })
});
function filter(data){
 //保存搜索量前10的綜藝節(jié)目標(biāo)題
 var result = [];
 //將頁面源代碼轉(zhuǎn)換為$對象
 var $ = cheerio.load(data);
 //查找每個綜藝節(jié)目標(biāo)題的外層div
 var temp_arr = $('[monkey = "zy"]').find('.point-bd').find('.point-title');
 //將綜藝節(jié)目標(biāo)題依次保存到結(jié)果數(shù)組中
 temp_arr.each(function(index,item){
  result.push($(item).text());
 })
 //[ '變形計','來吧冠軍','拜托了冰箱','昆侖決','天生是優(yōu)我','姐姐好餓','腦力男人時代','奔跑吧兄弟','我想和你唱','玫瑰之旅' ]
 console.log(result);
}

爬蟲代碼

下面將hao123網(wǎng)頁中的'實時熱點'、'今日熱點'、'民生熱點'、'電影'、'電視劇'、'綜藝'這6部分的排名爬下來,分別到對象名為'result'中的數(shù)組中,分別命令為'ss'、'jr'、'ms'、'dy'、'dsj'、'zy'

【代碼如下】

var http = require('http');
var cheerio = require('cheerio');
http.get('http://tuijian.hao123.com/hotrank',function(res){
 var data = '';
 res.on('data',function(chunk){
  data += chunk;
 });
 res.on('end',function(){
  filter(data);
 })
});
function filter(data){
 //保存各部分搜索量前10的名稱
 //對象名為榜單名,如'實時熱點'
 //對象內(nèi)容為10個標(biāo)題名稱組成的數(shù)組
 var result = {};
 //將頁面源代碼轉(zhuǎn)換為$對象
 var $ = cheerio.load(data);
 //查找'實時熱點'、'今日熱點'、'民生熱點'、'電影'、'電視劇'、'綜藝'這6個榜單所在的div
 var temp_div = $('.top-wrap');

 //保存榜單名稱
 var temp_title = [];

 temp_div.each(function(index,item){
  //查找榜單名,并保存到temp_title文件夾中
  temp_title.push($(item).find('h2').text());

  //查找每類下每個標(biāo)題的外層div
  var temp_arr = $(item).find('.point-bd').find('.point-title');

  //將result下的每個榜單初始化為一個數(shù)組
  var innerResult = result[temp_title[index]] = [];

  //將節(jié)目標(biāo)題依次保存到相應(yīng)榜單的數(shù)組中
  temp_arr.each(function(_index,_item){
   innerResult.push($(_item).text())
  })
 })
 console.log(result);
}

【結(jié)果如下】

以上這篇nodeJS實現(xiàn)簡單網(wǎng)頁爬蟲功能的實例(分享)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • node?gyp安裝canvas原生模塊編譯node?pregyp詳解

    node?gyp安裝canvas原生模塊編譯node?pregyp詳解

    這篇文章主要為大家介紹了Nodejs關(guān)于原生模塊編譯node-gyp + node-pre-gyp (以安裝canvas為例)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • node.js用fs.rename強(qiáng)制重命名或移動文件夾的方法

    node.js用fs.rename強(qiáng)制重命名或移動文件夾的方法

    本篇文章主要介紹了node.js用fs.rename強(qiáng)制重命名或移動文件夾的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 基于NodeJS開發(fā)釘釘回調(diào)接口實現(xiàn)AES-CBC加解密

    基于NodeJS開發(fā)釘釘回調(diào)接口實現(xiàn)AES-CBC加解密

    這篇文章主要介紹了基于NodeJS開發(fā)釘釘回調(diào)接口 實現(xiàn)AES-CBC加解密,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 基于websocket實現(xiàn)簡單聊天室對話

    基于websocket實現(xiàn)簡單聊天室對話

    這篇文章主要為大家詳細(xì)介紹了基于websocket實現(xiàn)簡單聊天室對話,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 如何用nodejs搭建代理服務(wù)器

    如何用nodejs搭建代理服務(wù)器

    這篇文章主要介紹了如何用nodejs搭建代理服務(wù)器,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • npm使用國內(nèi)淘寶鏡像的兩種方法

    npm使用國內(nèi)淘寶鏡像的兩種方法

    npm install時候,默認(rèn)是去npm鏡像源獲取,很多時候蝸牛一樣的速度,所以需要將安裝源設(shè)置成國內(nèi)的源,這樣速度就會快很多,本文就來介紹一下npm使用國內(nèi)淘寶鏡像的兩種方法,感興趣的可以了解一下
    2023-08-08
  • nodejs模塊學(xué)習(xí)之connect解析

    nodejs模塊學(xué)習(xí)之connect解析

    這篇文章主要介紹了nodejs模塊學(xué)習(xí)之connect解析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • node.js中實現(xiàn)同步操作的3種實現(xiàn)方法

    node.js中實現(xiàn)同步操作的3種實現(xiàn)方法

    這篇文章主要介紹了node.js中實現(xiàn)同步操作的3種實現(xiàn)方法,本文用實例講解一些需要同步操作的情況下,如何編程實現(xiàn),需要的朋友可以參考下
    2014-12-12
  • nodejs模塊系統(tǒng)源碼分析

    nodejs模塊系統(tǒng)源碼分析

    這篇文章主要介紹了nodejs模塊系統(tǒng)源碼分析,對nodejs感興趣的同學(xué),可以參考下
    2021-05-05
  • nodejs清空/刪除指定文件夾下面所有文件或文件夾的方法示例

    nodejs清空/刪除指定文件夾下面所有文件或文件夾的方法示例

    這篇文章主要介紹了nodejs清空/刪除指定文件夾下面所有文件或文件夾的方法,通過兩個具體案例形式分析了node.js同步刪除文件/文件夾,以及異步刪除文件/文件夾的相關(guān)實現(xiàn)技巧,涉及遞歸遍歷與文件判斷、回調(diào)等相關(guān)操作,需要的朋友可以參考下
    2023-04-04

最新評論

衡山县| 额尔古纳市| 远安县| 景德镇市| 鹿泉市| 盘锦市| 淮北市| 汶上县| 南昌市| 安吉县| 离岛区| 武隆县| 梓潼县| 永康市| 长白| 潮安县| 班玛县| 丹巴县| 咸宁市| 绥滨县| 汉源县| 英德市| 永修县| 仁寿县| 永济市| 双桥区| 元朗区| 山西省| 康乐县| 金华市| 宜昌市| 镇雄县| 土默特左旗| 九江县| 赤水市| 泽库县| 射洪县| 富源县| 巴青县| 林周县| 忻城县|