オンラインストアのテンプレートパーサーの例を提供したいと思います。 この例は、オンラインストアから構造化データを取得するための普遍的なツールのふりをしていませんが、おそらくインターネット上にたくさんあるテンプレートオンラインストアに適しています。
サイトを解析するためのツールとして、SlimerJSを使用します。
私は、できるだけ単純化された普遍的な形で可能な限り例を挙げようとしました。
エントリポイント:
このファイルの最初の部分は、SlimerJsの作業に関連する一般的なロジックです
script.jsvar grab = require('./grab');
ここでは、パーサーモジュールが接続および初期化され、製品カタログページのURLがinit()メソッドに渡されます。リンクは相対的です。 メインサイトドメインはconfig.jsファイルで設定されます
すべてのパーサーロジックはgrab.jsファイルにあります 私はそれを2つの部分に分けました。最初の部分は、SlimerJSのオブジェクトラッパーで、ブラウザーの複数のコピーを同時に操作するためのものです。
コードの理解を簡単にするために、コードに関するすべてのコメントをリストに入れました。
grab.js var file = require("./file").create();
ファイルの2番目の部分は動作を定義し、作成されたGrabオブジェクトを拡張します
Grab.prototype.route = function() { try {
ファイルシステムとの便利な作業のために、SlimerJSはデータの読み取りと書き込みの両方を可能にするAPIを提供します
file.js var fs = require('fs'); function FileHelper() { this.read = function(path_to_file) { if(!fs.isFile(path_to_file)){ throw new Error('File ('+path_to_file+') not found'); } var content = fs.read(path_to_file); if(!content.length) { throw new Error('File ('+path_to_file+') empty'); } return content.split("\n"); }; this.write = function(path_to_file, content, mode) { fs.write(path_to_file, content, mode); } this.writeJson = function(path_to_file, content, mode) { var result = ''; for(var i=0; i < content.length; i++) { result += JSON.stringify(content[i]) + "\n"; } this.write(path_to_file, result, mode); } } exports.create = function() { return new FileHelper(); };
最後のファイルは、システム全体に共通の変数を指定できる構成ファイルです
config.js var Config = function() { this.host = 'http://example.ru'; this.log_path = 'logs\\error.txt'; this.result_file = 'result\\result.txt'; }; exports.getConfig = function() { return new Config(); };
作業の結果は、さらにデータをエクスポートするために処理できるファイルの形式になります。
スクリプトは、コンソールからのコマンドによって実行されます
slimerjs script.js
ソースコード