欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

本文將使用nodeJS實(shí)現(xiàn)一個(gè)簡(jiǎ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)頁中的綜藝熱點(diǎn)部分

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

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

cheerio

我們?cè)趺磸脑创a中獲取到有用的數(shù)據(jù)呢?首先,nodeJS不支持document對(duì)象。如果要使用笨辦法,只能使用正則表達(dá)式來處理

cheerio 是nodejs特別為服務(wù)端定制的,能夠快速靈活的對(duì)JQuery核心進(jìn)行實(shí)現(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)換為$對(duì)象
 var $ = cheerio.load(data);
 //查找每個(gè)綜藝節(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());
 })
 //[ '變形計(jì)','來吧冠軍','拜托了冰箱','昆侖決','天生是優(yōu)我','姐姐好餓','腦力男人時(shí)代','奔跑吧兄弟','我想和你唱','玫瑰之旅' ]
 console.log(result);
}

爬蟲代碼

下面將hao123網(wǎng)頁中的'實(shí)時(shí)熱點(diǎn)'、'今日熱點(diǎn)'、'民生熱點(diǎn)'、'電影'、'電視劇'、'綜藝'這6部分的排名爬下來,分別到對(duì)象名為'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的名稱
 //對(duì)象名為榜單名,如'實(shí)時(shí)熱點(diǎn)'
 //對(duì)象內(nèi)容為10個(gè)標(biāo)題名稱組成的數(shù)組
 var result = {};
 //將頁面源代碼轉(zhuǎn)換為$對(duì)象
 var $ = cheerio.load(data);
 //查找'實(shí)時(shí)熱點(diǎn)'、'今日熱點(diǎn)'、'民生熱點(diǎn)'、'電影'、'電視劇'、'綜藝'這6個(gè)榜單所在的div
 var temp_div = $('.top-wrap');

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

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

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

  //將result下的每個(gè)榜單初始化為一個(gè)數(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實(shí)現(xiàn)簡(jiǎn)單網(wǎng)頁爬蟲功能的實(shí)例(分享)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Nodejs中crypto模塊的安全知識(shí)講解

    Nodejs中crypto模塊的安全知識(shí)講解

    本篇文章給大家詳細(xì)介紹了Nodejs中crypto模塊的安全知識(shí)的相關(guān)內(nèi)容,需要的朋友跟著小編一下學(xué)習(xí)參考下吧。
    2018-01-01
  • node版本太高導(dǎo)致項(xiàng)目跑不起來的解決辦法(windows)

    node版本太高導(dǎo)致項(xiàng)目跑不起來的解決辦法(windows)

    換了臺(tái)電腦后,安裝node,一切完美,發(fā)現(xiàn)其中有一個(gè)uniapp的小程序項(xiàng)目跑不起來,感覺是node版本太高導(dǎo)致的,所以只能重新安裝低版本的node,本文給大家介紹了node版本太高的解決辦法,需要的朋友可以參考下
    2023-10-10
  • node.js中ws模塊創(chuàng)建服務(wù)端和客戶端,網(wǎng)頁WebSocket客戶端

    node.js中ws模塊創(chuàng)建服務(wù)端和客戶端,網(wǎng)頁WebSocket客戶端

    今天小編就為大家分享一篇關(guān)于node.js中ws模塊創(chuàng)建服務(wù)端和客戶端,網(wǎng)頁WebSocket客戶端,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • express文件上傳中間件Multer詳解

    express文件上傳中間件Multer詳解

    multer是express官方推薦的文件上傳中間件,它是在busboy的基礎(chǔ)上開發(fā)的。目前multer的最新版本為:~1.1.0。本文將詳細(xì)介紹express文件上傳中間件Multer的安裝與使用等,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-10-10
  • MQTT Client實(shí)現(xiàn)消息推送功能的方法詳解

    MQTT Client實(shí)現(xiàn)消息推送功能的方法詳解

    這篇文章主要介紹了MQTT Client實(shí)現(xiàn)消息推送功能的方法,結(jié)合實(shí)例形式詳細(xì)分析了MQTT Client實(shí)現(xiàn)消息推送的基本原理、實(shí)現(xiàn)方法與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2023-05-05
  • NodeJS如何優(yōu)雅的實(shí)現(xiàn)Sleep休眠

    NodeJS如何優(yōu)雅的實(shí)現(xiàn)Sleep休眠

    這篇文章主要介紹了NodeJS如何優(yōu)雅的實(shí)現(xiàn)Sleep休眠問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • nodejs中函數(shù)的調(diào)用實(shí)例詳解

    nodejs中函數(shù)的調(diào)用實(shí)例詳解

    本文通過實(shí)例代碼給大家介紹了nodejs函數(shù)的調(diào)用,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-10-10
  • nodejs使用redis作為緩存介質(zhì)實(shí)現(xiàn)的封裝緩存類示例

    nodejs使用redis作為緩存介質(zhì)實(shí)現(xiàn)的封裝緩存類示例

    這篇文章主要介紹了nodejs使用redis作為緩存介質(zhì)實(shí)現(xiàn)的封裝緩存類,涉及nodejs操作redis進(jìn)行緩存設(shè)置相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • 解決node終端下運(yùn)行js文件不支持ES6語法

    解決node終端下運(yùn)行js文件不支持ES6語法

    這篇文章主要介紹了解決node終端下運(yùn)行js文件不支持ES6語法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 淺談Node Inspector 代理實(shí)現(xiàn)

    淺談Node Inspector 代理實(shí)現(xiàn)

    這篇文章主要介紹了淺談Node Inspector 代理實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10

最新評(píng)論