中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

node中怎么實現一個http小爬蟲

發布時間:2021-07-21 10:59:28 來源:億速云 閱讀:151 作者:Leah 欄目:web開發

這篇文章給大家介紹node中怎么實現一個http小爬蟲,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

爬取Node.js 教程首頁的所有數據

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

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

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

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

  // 當數據獲取完成將會觸發end事件,這里將會打印初node官網的html
  res.on('end',function(){
    console.log(html)
  })
}).on('error',function(){
  console.log('獲取node官網相關數據出錯')
})

終端執行結果中發現這個頁面的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" href="http://www.runoob.com/nodejs/nodejs-tutorial.html" />
<meta name="keywords" content="Node.js 教程,node,Node.js,nodejs">
<meta name="description" content="Node.js 教程  簡單的說 Node.js 就是運行在服務端的 JavaScript。 Node.js 是一個基于Chrome JavaScript 運行時建立的一個平臺
。 Node.js是一個事件驅動I/O服務端JavaScript環境,基于Google的V8引擎,V8引擎執行Javascript的速度非常快,性能非常好。  誰適合閱讀本教程? 如果你是一個前端程序員,你不懂得像PHP、Python或Ruby等動態編程語言,..">
<link rel="shortcut icon" href="//static.runoob.com/images/favicon.ico" rel="external nofollow" rel="external nofollow" mce_href="//static.runoob.com/images/favicon.ico" 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" href="//cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="external nofollow" media="all" />
<!--[if gte IE 9]><!-->
。。。。。。。。。。
這里只展示部分不然你半天看不到頭

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

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

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官網地址變量
// filer node chapter
function filerNodeChapter(html){
  // 將爬取得HTML裝載起來
  var $=cheerio.load(html);
  // 拿到左側邊欄的每個目錄
  var nodeChapter=$('#leftcolumn a');
  //這里我希望我能獲取的到的最終數據格式這個樣子的,如此我們能知道每個目錄的地址及標題
  /**
   * [{id:,title:}]
   */
  var chapterData=[];
  nodeChapter.each(function(item){
    // 獲取每項的地址及標題
    var id=$(this).attr('href');
    var title=$(this).text();
    chapterData.push({
      id:id,
      title:title
    })
  })

  return chapterData;

}

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

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

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

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

    //循環打印所獲取的數據
    getChapterData(nodeChapter)
  })
}).on('error',function(){
  console.log('獲取node官網相關數據出錯')
})

終端執行結果及打印出課程目錄

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 創建第一個應用

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

 【 nodejs-repl.html 】 Node.js REPL

 【 nodejs-callback.html 】 Node.js 回調函數

 【 nodejs-event-loop.html 】 Node.js 事件循環

 【 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 模塊系統
。。。。。。。。。。。
這里就不全部給出,你可以自己嘗試著運行操作查看所有結果

關于node中怎么實現一個http小爬蟲就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節
推薦閱讀:
  1. Node爬蟲實踐
  2. node爬蟲

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

铜川市| 玉田县| 海伦市| 五家渠市| 永嘉县| 汤原县| 财经| 广州市| 灵石县| 阿拉善右旗| 马关县| 岳阳县| 平山县| 舒兰市| 博罗县| 尖扎县| 赞皇县| 石狮市| 安仁县| 马山县| 崇左市| 兖州市| 油尖旺区| SHOW| 镇坪县| 徐闻县| 沾化县| 萝北县| 保亭| 秦安县| 岐山县| 天等县| 枣阳市| 文安县| 贡嘎县| 兖州市| 东阳市| 铜梁县| 侯马市| 大新县| 清河县|