SlimerJSを使用した単純なWebサイト解析

SlimerJSスクリプトブラウザーを使用した適切な解析資料がなく、空き時間があるため、短い記事を書くことにしました。







はじめに



SlimerJsでの作業を開始するには、OS 最新バージョンのスクリプトブラウザー(通常、FirefoxがなくてもSlimerJSを実行できるXulRunnerを含む完全版をダウンロードする必要があります)をダウンロードする必要があります。



SlimerJSのインストールについては、 ここで詳しく説明しているので説明しません。そのため、動的コンテンツを含むサイトを解析する際に最も頻繁に発生する可能性のある状況についてすぐに説明します



使用する



ページ自体が既にロードされた後、サイトコンテンツがajaxによってロードされるとします。 動的コンテンツはいくつかの方法で取得できます。主なことは、一定の時間間隔でデータの可用性をチェックする関数を作成することです。 私はどこでもこのオプションを使用しましたが、サイトで多くのシーケンシャルアクションが必要な場合、コードのメンテナンスがますます難しくなりました。 その結果、実行時に一時停止を使用するようになり、タスクが簡素化されました。



var webpage = require('webpage').create(); webpage .open('http://example.com') .then(function(){ slimer.wait(3000); // ,    var someContent = webpage.evaluate(function () { //      ,    return document.querySelector("#aDiv").textContent; }); });
      
      





別の便利な機能は、イベントの作成です。 texフィールドの文字セットをシミュレートするのは非常に簡単です。これは、たとえば次のように承認または登録時に必要になることがよくあります。



 var webpage = require('webpage').create(); webpage .open('http://example.com') .then(function(){ webpage.evaluate(function () { document.getElementById("input").focus(); }); webpage.sendEvent('keypress', "hello World"); });
      
      





一般に、senEvent()関数は非常に柔軟です 。詳細については、 こちらをご覧ください



解析時にサイトにキャプチャが表示されると、状況が非常に頻繁に発生します。 この場合、キャプチャのスクリーンショットを撮り、キャプチャ解除サービスを提供するサービスの1つに送信する必要があります。



 var webpage = require('webpage').create(); webpage .open('http://example.com') .then(function(){ webpage.clipRect = { top: 14, left: 3, width: 400, height: 300 }; //           var screen = webpage.renderBase64('png'); //      base64,       var webpage2 = require('webpage').create(); //    webpage2 .open('http://example2.com') .then(function(){ //...      });
      
      





SlimerJSはPhantomJSに非常に似ていますが、最も重要な違いは、SlimerJSの実行時のブラウザーウィンドウです。 つまり、ファントムを使用するよりもデバッグと開発が簡単です。



まとめ



SlimerJSを使用すると、通常のcUrlでは解析できない複雑な動的サイトをすばやく簡単に解析できます。



All Articles