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

NodeJS的url截取模塊url-extract的使用實例

 更新時間:2013年11月18日 09:10:43   作者:  
本文主要介紹了NodeJS的url信息截取模塊url-extract的使用方法,最后提供了實例代碼供大家參考

上次介紹了怎么利用NodeJS + PhantomJS進行截圖,但由于對每次截圖操作,都啟用了一個PhantomJS進程,所以并發(fā)量上去后,效率堪憂,所以我們重寫了所有代碼,并將其獨立成為一個模塊,方便調(diào)用。
如何改進?控制線程數(shù),以及單線程處理url數(shù)量。使用Standard Output & WebSocket 進行通訊。添加緩存機制,目前使用Javascript Object進行。對外提供簡易的接口。

設(shè)計圖

 

依賴 & 安裝

由于PhantomJS 1.9.0+才開始支持Websocket,所以我們先要確定在PATH中的PhantomJS是為1.9.0以上版本。在命令行鍵入:

$ phantomjs -v

如果能返回版本號1.9.x,則可以繼續(xù)操作。如果版本過低,或者出現(xiàn)錯誤,請到PhantomJS官網(wǎng)下載最新版本。

如果你已經(jīng)安裝了Git,或者擁有Git Shell,那么在命令行鍵入:
$ npm install url-extract

進行安裝。

一個簡單的例子

比如我們要截取百度首頁,那么可以這樣:

復(fù)制代碼 代碼如下:
module.exports = (function () { "use strict" var urlExtract = require('url-extract'); urlExtract.snapshot('http://www.baidu.com', function (job) { console.log('This is a snapshot example.'); console.log(job); process.exit(); }); })();

下面是打?。?/P>

其中,image屬性就是截圖相對于工作路徑的地址。我們可以使用Job的getData接口來得到更清楚的數(shù)據(jù),例如:

復(fù)制代碼 代碼如下:
module.exports = (function () { "use strict" var urlExtract = require('url-extract'); urlExtract.snapshot('http://www.baidu.com', function (job) { console.log('This is a snapshot example.'); console.log(job.getData()); process.exit(); }); })();

打印就變成了這樣了:

image表示截圖相對于工作路徑的地址,status表示狀態(tài)是否正常,true代表正常,false代表截圖失敗。

更多例子請參見:https://github.com/miniflycn/url-extract/tree/master/examples

 

主要API

.snapshot

url快照

.snapshot(url, [callback]).snapshot(urls, [callback]).snapshot(url, [option]).snapshot(urls, [option])
復(fù)制代碼 代碼如下:
url {String} 要截取的地址 urls {Array} 要截取的地址數(shù)組 callback {Function} 回調(diào)函數(shù) option {Object} 可選參數(shù) ┝ id {String} 自定義url的id,如果第一個參數(shù)是urls,此參數(shù)無效 ┝ image {String} 自定義截圖的保存地址,如果第一個參數(shù)是urls,此參數(shù)無效 ┝ groupId {String} 定義一組url的groupId,用于返回時候辨認是哪一組url ┝ ignoreCache {Boolean} 是否忽略緩存 ┗ callback {Function} 回調(diào)函數(shù)

.extract

url信息抓取,并獲取快照

.extract(url, [callback]).extract(urls, [callback]).extract(url, [option]).extract(urls, [option])

url {String} 要截取的地址

urls {Array} 要截取的地址數(shù)組

callback {Function} 回調(diào)函數(shù)

option {Object} 可選參數(shù)

┝ id {String} 自定義url的id,如果第一個參數(shù)是urls,此參數(shù)無效

┝ image {String} 自定義截圖的保存地址,如果第一個參數(shù)是urls,此參數(shù)無效

┝ groupId {String} 定義一組url的groupId,用于返回時候辨認是哪一組url

┝ ignoreCache {Boolean} 是否忽略緩存

┗ callback {Function} 回調(diào)函數(shù)

Job(類)

每一個url對應(yīng)一個job對象,url的相關(guān)信息由job對象存儲。

Field

url {String} 鏈接地址content {Boolean} 是否抓取頁面的title和description信息id {String} job的idgroupId {String} 一堆job的組idcache {Boolean} 是否開啟緩存callback {Function} 回調(diào)函數(shù)image {String} 圖片地址status {Boolean} job當前是否正常

Prototype

getData() 獲取job的相關(guān)數(shù)據(jù)

 

全局配置

url-extract根目錄中的config文件可以進行全局配置,默認如下:

module.exports = { wsPort: 3001, maxJob: 100, maxQueueJob: 400, cache: 'object', maxCache: 10000, workerNum: 0};
wsPort {Number} websocket占用的端口地址maxJob {Number} 每個PhantomJS線程可并發(fā)worker數(shù)maxQueueJob {Number} 最大等待工作數(shù)量,0表示不限制,超過該數(shù)量,任何工作都直接返回失?。磗tatus = false)cache {String} 緩存實現(xiàn),目前只有object實現(xiàn)maxCache {Number} 最大緩存鏈接數(shù)workerNum {Number} PhantomJS線程數(shù),0表示和CPU數(shù)量相同

 

一個簡單的服務(wù)例子

https://github.com/miniflycn/url-extract-server-example

注意,需要安裝connect和url-extract:

$ npm install

如果你下載了網(wǎng)盤的文件,那么請安裝connect:

$ npm install connect

然后鍵入:

$ node bin/server

打開:

http://localhost:3000

查看效果。

 

;

相關(guān)文章

  • 基于javascript 閉包基礎(chǔ)分享

    基于javascript 閉包基礎(chǔ)分享

    閉包向來給包括JavaScript程序員在內(nèi)的程序員以神秘,高深的感覺,事實上,閉包的概念在函數(shù)式編程語言中算不上是難以理解的知識
    2013-07-07
  • 實例講解JavaScript中的this指向錯誤解決方法

    實例講解JavaScript中的this指向錯誤解決方法

    JavaScript中this指向的處理是令大家普遍頭疼的問題,這里我們舉一個實例講解JavaScript中的this指向錯誤解決方法,需要的朋友可以參考下
    2016-06-06
  • JavaScript splice()方法詳解

    JavaScript splice()方法詳解

    這篇文章介紹了JavaScript splice()方法,有需要的朋友可以參考一下
    2013-11-11
  • JavaScript操作HTML DOM節(jié)點的基礎(chǔ)教程

    JavaScript操作HTML DOM節(jié)點的基礎(chǔ)教程

    這篇文章主要介紹了JavaScript操作HTML DOM節(jié)點的基礎(chǔ)入門教程,包括對節(jié)點的創(chuàng)建修改刪除等操作,還特別提到了其中appendChild()與insertBefore()插入節(jié)點時需注意的問題,需要的朋友可以參考下
    2016-03-03
  • 詳解JavaScript中this關(guān)鍵字的用法

    詳解JavaScript中this關(guān)鍵字的用法

    this是函數(shù)內(nèi)部的對象并且被用于調(diào)用該函數(shù),this在全局中的使用非常之靈活,下面就帶大家來詳解JavaScript中this關(guān)鍵字的用法
    2016-05-05
  • innerText 使用示例

    innerText 使用示例

    在元素間的文本就是通過對象.innerText,下面有個不錯的示例,感興趣的朋友可以參考下
    2014-01-01
  • javascript學(xué)習筆記(三)顯示當時時間的代碼

    javascript學(xué)習筆記(三)顯示當時時間的代碼

    主要是為了熟悉javascript中在date對象,大家可以看下。
    2011-04-04
  • 關(guān)于cookie的初識和運用(js和jq)

    關(guān)于cookie的初識和運用(js和jq)

    下面小編就為大家?guī)硪黄P(guān)于cookie的初識和運用(js和jq)。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,祝大家游戲愉快哦
    2016-04-04
  • Javascript學(xué)習筆記9 prototype封裝繼承

    Javascript學(xué)習筆記9 prototype封裝繼承

    在上文中,我利用prototype的原理做了一個封裝的New,然后我就想到,我是否可以用prototype的原理進一步封裝面向?qū)ο蟮囊恍┗咎卣髂兀勘热缋^承。
    2010-01-01
  • 為何JS操作的href都是javascript:void(0);呢

    為何JS操作的href都是javascript:void(0);呢

    本文主要是由于看了《javascript模式》之后看到各大網(wǎng)站的JS操作的href都是javascript:void(0);,可是書中明明是說“JS中避免使用void”所產(chǎn)生的思考,記錄下來,也請大神能夠解惑
    2015-11-11

最新評論

太仓市| 岱山县| 犍为县| 富民县| 炎陵县| 卓资县| 抚州市| 卫辉市| 洛南县| 汤阴县| 广南县| 甘南县| 太仓市| 文成县| 陵川县| 土默特右旗| 巫山县| 平罗县| 墨江| 牙克石市| 沁水县| 平乡县| 房山区| 沾益县| 湖南省| 尚志市| 兰州市| 平乐县| 江孜县| 盐边县| 扶绥县| 石门县| 新余市| 漠河县| 图片| 阆中市| 岱山县| 元朗区| 武威市| 绿春县| 河北区|