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

基于node下的http小爬蟲的示例代碼

 更新時(shí)間:2018年01月11日 12:04:05   作者:風(fēng)慕李  
本篇文章主要介紹了基于node下的http小爬蟲的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

每時(shí)每刻不管你睡了還是沒睡,互聯(lián)網(wǎng)都會(huì)有海量的數(shù)據(jù)來來往往,有客服端到服務(wù)端,有服務(wù)端到服務(wù)端。http的get和request完成的角色即為數(shù)據(jù)的獲取及提交,接下來我們動(dòng)手寫一個(gè)簡(jiǎn)單的小爬蟲來爬爬菜鳥教程中關(guān)于node的章節(jié)的課程界面。

爬取Node.js 教程首頁的所有數(shù)據(jù)

建立node-http.js,其中代碼如下,代碼中有詳細(xì)的的注釋,自行理解了哈

var http=require('http');//獲取http模塊
var url='http://www.runoob.com/nodejs/nodejs-tutorial.html';//定義node官網(wǎng)地址變量

http.get(url,function(res){
  var html='';

  // 這里將會(huì)觸發(fā)data事件,不斷觸發(fā)不斷跟新html直至完畢
  res.on('data',function(data){
    html +=data
  })

  // 當(dāng)數(shù)據(jù)獲取完成將會(huì)觸發(fā)end事件,這里將會(huì)打印初node官網(wǎng)的html
  res.on('end',function(){
    console.log(html)
  })
}).on('error',function(){
  console.log('獲取node官網(wǎng)相關(guān)數(shù)據(jù)出錯(cuò)')
})

終端執(zhí)行結(jié)果中發(fā)現(xiàn)這個(gè)頁面的html全部被爬下來了

G:\node\node-http> node node-http.js
<!Doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta property="qc:admins" content="465267610762567726375" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Node.js 教程 | 菜鳥教程</title>
<link rel='dns-prefetch' href='//s.w.org' />
<link rel="canonical"  />
<meta name="keywords" content="Node.js 教程,node,Node.js,nodejs">
<meta name="description" content="Node.js 教程  簡(jiǎn)單的說 Node.js 就是運(yùn)行在服務(wù)端的 JavaScript。 Node.js 是一個(gè)基于Chrome JavaScript 運(yùn)行時(shí)建立的一個(gè)平臺(tái)
。 Node.js是一個(gè)事件驅(qū)動(dòng)I/O服務(wù)端JavaScript環(huán)境,基于Google的V8引擎,V8引擎執(zhí)行Javascript的速度非???,性能非常好。  誰適合閱讀本教程? 如果你是一個(gè)前端程序員,你不懂得像PHP、Python或Ruby等動(dòng)態(tài)編程語言,..">
<link rel="shortcut icon"  rel="external nofollow" rel="external nofollow" mce_ rel="external nofollow" rel="external nofollow" type="image/x-icon">
<link rel="stylesheet" href="/wp-content/themes/runoob/style.css?v=1.141" rel="external nofollow" type="text/css" media="all" />
<link rel="stylesheet"  rel="external nofollow" media="all" />
<!--[if gte IE 9]><!-->
。。。。。。。。。。
這里只展示部分不然你半天看不到頭

當(dāng)然爬個(gè)HTML對(duì)于我們來說沒啥用,現(xiàn)在我們要做些過濾,比如這個(gè)node教程中我想知道課程目錄有哪些,這樣可以選擇感興趣的去看看學(xué)學(xué)。直接上代碼吧還是:

不過在此之前我們需要下載cheerio模塊(cheerio是nodejs的抓取頁面模塊,為服務(wù)器特別定制的,快速、靈活、實(shí)施的jQuery核心實(shí)現(xiàn)。適合各種Web爬蟲程序。)具體詳細(xì)介紹你們可以自行去搜索了解,cheerio的用跟jquery的用法非常類似,所以不用擔(dān)心上手繁瑣。

PS G:\node\node-http> npm install cheerio

建立node-http-more.js,其中代碼如下:

var http=require('http');//獲取http模塊
var cheerio=require('cheerio');//引入cheerio模塊
var url='http://www.runoob.com/nodejs/nodejs-tutorial.html';//定義node官網(wǎng)地址變量
// filer node chapter
function filerNodeChapter(html){
  // 將爬取得HTML裝載起來
  var $=cheerio.load(html);
  // 拿到左側(cè)邊欄的每個(gè)目錄
  var nodeChapter=$('#leftcolumn a');
  //這里我希望我能獲取的到的最終數(shù)據(jù)格式這個(gè)樣子的,如此我們能知道每個(gè)目錄的地址及標(biāo)題
  /**
   * [{id:,title:}]
   */
  var chapterData=[];
  nodeChapter.each(function(item){
    // 獲取每項(xiàng)的地址及標(biāo)題
    var id=$(this).attr('href');
    var title=$(this).text();
    chapterData.push({
      id:id,
      title:title
    })
  })

  return chapterData;

}

//獲取每個(gè)數(shù)據(jù)
function getChapterData(nodeChapter){
  nodeChapter.forEach(function(item){
    console.log(' 【 '+item.id+' 】'+item.title+'\n')
  });
}

http.get(url,function(res){
  var html='';

  // 這里將會(huì)觸發(fā)data事件,不斷觸發(fā)不斷跟新html直至完畢
  res.on('data',function(data){
    html +=data
  })

  // 當(dāng)數(shù)據(jù)獲取完成將會(huì)觸發(fā)end事件,這里將會(huì)打印初node官網(wǎng)的html
  res.on('end',function(){
    //console.log(html)
    // 過濾出node.js的課程目錄
    var nodeChapter= filerNodeChapter(html);

    //循環(huán)打印所獲取的數(shù)據(jù)
    getChapterData(nodeChapter)
  })
}).on('error',function(){
  console.log('獲取node官網(wǎng)相關(guān)數(shù)據(jù)出錯(cuò)')
})

終端執(zhí)行結(jié)果及打印出課程目錄

G:\node\node-http> node node-http-more.js
 【 /nodejs/nodejs-tutorial.html 】
Node.js 教程

 【 /nodejs/nodejs-install-setup.html 】
Node.js 安裝配置

 【 /nodejs/nodejs-http-server.html 】
Node.js 創(chuàng)建第一個(gè)應(yīng)用

 【 nodejs-npm.html 】 NPM 使用介紹

 【 nodejs-repl.html 】 Node.js REPL

 【 nodejs-callback.html 】 Node.js 回調(diào)函數(shù)

 【 nodejs-event-loop.html 】 Node.js 事件循環(huán)

 【 nodejs-event.html 】 Node.js EventEmitter

 【 nodejs-buffer.html 】 Node.js Buffer

 【 nodejs-stream.html 】 Node.js Stream

 【 /nodejs/nodejs-module-system.html 】
Node.js 模塊系統(tǒng)
。。。。。。。。。。。
這里就不全部給出,你可以自己嘗試著運(yùn)行操作查看所有結(jié)果

到此一個(gè)簡(jiǎn)單的爬蟲就寫完了,趕緊自己動(dòng)手試試吧,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:

相關(guān)文章

  • Node.js中調(diào)用mysql存儲(chǔ)過程示例

    Node.js中調(diào)用mysql存儲(chǔ)過程示例

    這篇文章主要介紹了Node.js中調(diào)用mysql存儲(chǔ)過程示例,本文在windows環(huán)境測(cè)試通過,本文一并給出了創(chuàng)建數(shù)據(jù)庫、錄入數(shù)據(jù)、創(chuàng)建存儲(chǔ)過程、調(diào)用存儲(chǔ)過程等例子,需要的朋友可以參考下
    2014-12-12
  • 通過nodejs 服務(wù)器讀取HTML文件渲染到頁面的方法

    通過nodejs 服務(wù)器讀取HTML文件渲染到頁面的方法

    今天小編就為大家分享一篇通過nodejs 服務(wù)器讀取HTML文件渲染到頁面的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • nodejs制作小爬蟲功能示例

    nodejs制作小爬蟲功能示例

    這篇文章主要介紹了nodejs制作小爬蟲功能,結(jié)合實(shí)例形式分析了node.js安裝request、cheerio模塊及請(qǐng)求發(fā)送、數(shù)據(jù)庫操作等相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2020-02-02
  • node.js中express中間件body-parser的介紹與用法詳解

    node.js中express中間件body-parser的介紹與用法詳解

    這篇文章主要給大家介紹了關(guān)于node.js中express中間件body-parser的相關(guān)資料,文章通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • 淺析node.js中close事件

    淺析node.js中close事件

    本文簡(jiǎn)單介紹了http.ServerRespose對(duì)象的close事件,并給出了相關(guān)實(shí)例,推薦給需要的小伙伴參考下吧。
    2014-11-11
  • nodejs同步調(diào)用獲取mysql數(shù)據(jù)時(shí)遇到的大坑

    nodejs同步調(diào)用獲取mysql數(shù)據(jù)時(shí)遇到的大坑

    今天小編就為大家分享一篇關(guān)于nodejs同步調(diào)用獲取mysql數(shù)據(jù)時(shí)遇到的大坑,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • node連接redis的方法實(shí)現(xiàn)

    node連接redis的方法實(shí)現(xiàn)

    本文主要介紹了node連接redis的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • node.js實(shí)現(xiàn)http服務(wù)器與瀏覽器之間的內(nèi)容緩存操作示例

    node.js實(shí)現(xiàn)http服務(wù)器與瀏覽器之間的內(nèi)容緩存操作示例

    這篇文章主要介紹了node.js實(shí)現(xiàn)http服務(wù)器與瀏覽器之間的內(nèi)容緩存操作,結(jié)合實(shí)例形式分析了node.js http服務(wù)器與瀏覽器之間的內(nèi)容緩存原理與具體實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2020-02-02
  • node網(wǎng)頁分段渲染詳解

    node網(wǎng)頁分段渲染詳解

    按照常理,我們渲染一張網(wǎng)頁,必定是網(wǎng)頁全部拼裝完畢,然后生成HTML字符串,傳送至客戶端。這也意味著,如果一張網(wǎng)頁處理的有快有慢的話,必須串行等到所有的邏輯都處理完畢。后端才能進(jìn)行返回。
    2016-09-09
  • visual studio配置node.js開發(fā)的圖文教程

    visual studio配置node.js開發(fā)的圖文教程

    在進(jìn)行node開發(fā)時(shí),使用visual studio作為開發(fā)工具是非常常見的選擇,本文主要介紹了visual studio配置node.js開發(fā)的圖文教程,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05

最新評(píng)論