ホームページ  >  記事  >  ウェブフロントエンド  >  NodeJSのURLインターセプトモジュールurl-extract_基礎知識の使用例

NodeJSのURLインターセプトモジュールurl-extract_基礎知識の使用例

WBOY
WBOYオリジナル
2016-05-16 17:14:421129ブラウズ

前回、NodeJS PhantomJSを使ってスクリーンショットを撮る方法を紹介しましたが、スクリーンショット操作ごとにPhantomJSのプロセスが有効になるため、同時実行数が増えると効率が心配になるため、コードを全て書き直して独立したモジュール化しました。簡単に電話をかけることができます。
どうすれば改善できますか? スレッドの数と、単一のスレッドで処理される URL の数を制御します。通信には標準出力とWebSocketを使用します。現在 Javascript オブジェクトを使用しているキャッシュ メカニズムを追加します。外部世界へのシンプルなインターフェースを提供します。

デザイン

依存関係とインストール

PhantomJS 1.9.0 は Websocket のサポートを開始したばかりなので、最初に PATH 内の PhantomJS がバージョン 1.9.0 以降であることを確認する必要があります。コマンドラインで次のように入力します:

$ phantomjs -v

バージョン番号 1.9.x を返すことができれば、操作を続行できます。バージョンが低すぎる場合、またはエラーが発生する場合は、PhantomJS 公式 Web サイト にアクセスして最新バージョンをダウンロードしてください。

Git がインストールされている場合、または Git Shell がある場合は、コマンド ラインに次のように入力します:
$ npm install url-extract

インストールに進みます。

簡単な例

たとえば、Baidu ホームページを傍受したい場合は、次のようにすることができます:

コードをコピーします コードは次のとおりです:
module.exports = (function () { "use strict" var urlExtract = require('url-extract' ); urlExtract.snapshot('http://www.baidu.com', function (job) { console.log('これはスナップショットの例です。'); console.log(job); process.exit(); }); })();
以下は印刷物です:

このうち、image 属性は、作業パスからの相対的なスクリーンショットのアドレスです。 Job の getData インターフェイスを使用して、より明確なデータを取得できます。例:

コードをコピー コードは次のとおりです:
module.exports = (function () { "厳密な使用" var urlExtract = require('url-extract'); urlExtract.snapshot('http://www.baidu.com', function (job) { console.log ('これはスナップショットの例です。'); console.log(job.getData()); })();
印刷は次のようになります:

image は作業パスに対する相対的なスクリーンショットのアドレスを表し、status はステータスが正常かどうかを表し、true は正常を表し、false はスクリーンショットが失敗したことを表します。

その他の例については、以下を参照してください:

https://github.com/miniflycn/url-extract/tree/master/examples

メイン API

.スナップショット

url スナップショット

.snapshot(url, [コールバック]).snapshot(url, [コールバック]).snapshot(url, [オプション]).snapshot(url, [オプション])

コードをコピー コードは次のとおりです: url {String} インターセプトするアドレス urls {Array } インターセプトされるアドレス アドレス配列コールバック {関数} コールバック関数オプション {オブジェクト} オプションのパラメータ ┝ id {String} 最初のパラメータが urls の場合、このパラメータは無効です ┝ image {String} 保存。カスタム スクリーンショットのアドレス (最初のパラメータが url の場合、このパラメータは無効です┝ groupId {String} は URL のグループの groupId を定義します。返すときに URL のグループを識別するために使用されます。┝ignoreCache {Boolean} 無視するかどうかキャッシュ┗ コールバック {Function} コールバック関数

.extract

URL 情報を取得し、スナップショットを取得します

.extract(url, [callback]).extract(urls, [callback]).extract(url, [option]).extract( urls, [オプション])

url {String} 傍受されるアドレス

urls {Array} インターセプトするアドレスの配列

callback {Function} コールバック関数

オプション {Object} オプションのパラメータ

┝ id {String} 最初のパラメータが url の場合、このパラメータは無効です。

┝ image {String} 最初のパラメータが url の場合、このパラメータは無効です。

┝ groupId {String} は、URL のグループの groupId を定義します。

を返すときに、それが URL のどのグループであるかを識別するために使用されます。

┝ignoreCache {Boolean} キャッシュを無視するかどうか

┗ コールバック {関数} コールバック関数

ジョブ (クラス)

各 URL はジョブ オブジェクトに対応し、ジョブ オブジェクトには URL の関連情報が格納されます。

フィールド

url {String} リンク アドレス content {Boolean} ページのタイトルと説明情報をクロールするかどうか id {String} ジョブの idgroupId {String} 一連のジョブのグループ ID キャッシュ {Boolean} キャッシュ コールバックを有効にするかどうか {Function}コールバック関数 image {String} 画像アドレスのステータス {Boolean} ジョブが現在正常かどうか

プロトタイプ

getData() はジョブ関連データを取得します

グローバル構成

url-extract のルート ディレクトリにある設定ファイルはグローバルに設定できます:

module.exports = { wsPort: 3001, maxJob: 100, maxQueueJob: 400, cache: 'object', maxCache: 10000, workerNum: 0};
wsPort {Number} WebSocket が占有するポート アドレス maxJob {Number} 各 PhantomJS スレッドが持つことができる同時ワーカーの数 maxQueueJob {Number} 待機中のジョブの最大数。0 は制限がないことを意味します。この数を超えると、任意のジョブが実行されます。直接失敗に戻ります (つまり、status = false) キャッシュ {String} キャッシュの実装、現在はオブジェクトのみが実装されています maxCache {Number} キャッシュ リンクの最大数 workNum {Number} PhantomJS スレッド番号、0 は CPU の数と同じを意味します

簡単なサービス例

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

connect と url-extract をインストールする必要があることに注意してください:

$ npm install

ネットワーク ディスク ファイルをダウンロードした場合は、connect をインストールしてください:

$ npm install connect

次に、次のように入力します:

$ ノード bin/サーバー

開く:

http://localhost:3000

効果を確認します。

;

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。