ブラウザエンジン-phantomjs初認識
5399 ワード
最近重要な任務がないので、暇を見つけてプロジェクトグループの爬虫グループのコードを見てみました.私たちの爬虫類は主にpythonのscrapyフレームワークを主としているので、便利に見えます.コードを見ている間にphantomjsというものを見て、とても新鮮で、爬虫類の開発を聞いてみました.この品物は何に使いますか.開発は私にこれがjsエンジンだと教えてくれました.私たちはajaxページを捕まえるときに使っています.QAはずっとseleniumでjsレンダリングに対処しているのではないでしょうか.これを試してみてください.ブラウザを使う必要はありません.そこで、帰ってphantomjsというものを調べて、勉強してみると、なかなか上手になりやすいような気がします.
Phantomjsは軽量なブラウザエンジンで、公式サイトの紹介では、公式サイトのアドレス:http://phantomjs.org/ webテストは、主に軽くて迅速にwebテストを行うことができ、ブラウザに依存する必要はありません.seleniumを使ったことがある友达は、ブラウザを開くのがどんなに苦しいかを知っています.特にFireFoxは、RobotFrame、WebDriveなど、多くのテストフレームワークをサポートしています. ページ自動レンダリング.標準的なdomApiでページ要素を操作することができ、Jqueryを注入することもでき、jqueryでページ要素を操作することができます. スクリーンスナップ、これはいいです.時々caseが失敗したり、スクリーンをキャプチャしようとしたとき、seleniumが持参したキャプチャでブラウザ互換性の問題に直面したりしますが、これでキャプチャすると安定するはずです. ネットワーク監視.これは私があまり接触していないので、主にページのロード速度を自動的に分析することができ、標準的なHARフォーマットファイルをエクスポートすることもできます.
使用方法:
コマンドを実行するのはphtntomsjs+jsスクリプトでいいです
Phtntomsjsはcommonjsの実現方法を用いる、commonjsについてはhttp://wiki.commonjs.org/wiki/Modules/1.1.1#Requireを見ることができる.
Phtntomsjsはいくつかのモジュールを持っています.System,Webpage,Child_Process,WebServer
具体的な応用:
1.簡単なアクセス環境変数の例
2.ホームページのスクリーンショット、ホームページのスクリーンショットはwebpageモジュールを使って、例えば私はブログ園のトップページをスクリーンショットしたいです
3.Webロードの例
実はこのページのロードの最も良い応用はウェブページの各種の性能をテストするので、ブラウザを開けて検索する必要はありませんて、もしヤフーのYslowツールに協力すれば、hudson(jenkins)をプラスしてウェブページのロードも持続的な継承テストの中に入ることができます.
結局linuxの下では、グラフィックインタフェースがないことが多いので、phantomjs+Yslow+hudsonのスーパーコンビネーション:http://yslow.org/phantomjs/
要するに:phantomjsは1つのとても强大なブラウザエンジンで、私もちょうど接触して间もないため、多くの地方はまだあまり熟知していませんが、幸いにも彼のドキュメントは多くて、例もとても豊富で、基本的に持参した例はすべて1つのapiとして呼び出すことができて、手も简単で、jsに対して少し基础の友达はすべてすぐに手に入れることができます.
Phantomjsは軽量なブラウザエンジンで、公式サイトの紹介では、公式サイトのアドレス:http://phantomjs.org/
使用方法:
コマンドを実行するのはphtntomsjs+jsスクリプトでいいです
Phtntomsjsはcommonjsの実現方法を用いる、commonjsについてはhttp://wiki.commonjs.org/wiki/Modules/1.1.1#Requireを見ることができる.
Phtntomsjsはいくつかのモジュールを持っています.System,Webpage,Child_Process,WebServer
具体的な応用:
1.簡単なアクセス環境変数の例
var system = require('system');
// require , system
var env=require('system').env;
if (system.args.length === 1) {
Object.keys(env).forEach(function(key) {
console.log(key + '=' + env[key]);
}
)}
else {
system.args.forEach(function (arg, i) {
console.log(i + ': ' + arg);
});
}
phantom.exit();
2.ホームページのスクリーンショット、ホームページのスクリーンショットはwebpageモジュールを使って、例えば私はブログ園のトップページをスクリーンショットしたいです
var page = require('webpage').create();
page.open('http://cnblogs.com/', function () {
page.render('cnblog.png');
phantom.exit();
});
3.Webロードの例
var page = require('webpage').create(),
system = require('system'),
t, address;
if (system.args.length === 1) {
console.log('Usage: loadspeed.js <some URL>');
phantom.exit(1);
} else {
t = Date.now();
address = system.args[1];
//
page.open(address, function (status) {
if (status !== 'success') {
console.log('FAIL to load the address');
} else {
t = Date.now() - t;
//evaluate
console.log('Page title is ' + page.evaluate(function () {
return document.title;
}));
console.log('Loading time ' + t + ' msec');
}
phantom.exit();
});
}
実はこのページのロードの最も良い応用はウェブページの各種の性能をテストするので、ブラウザを開けて検索する必要はありませんて、もしヤフーのYslowツールに協力すれば、hudson(jenkins)をプラスしてウェブページのロードも持続的な継承テストの中に入ることができます.
結局linuxの下では、グラフィックインタフェースがないことが多いので、phantomjs+Yslow+hudsonのスーパーコンビネーション:http://yslow.org/phantomjs/
要するに:phantomjsは1つのとても强大なブラウザエンジンで、私もちょうど接触して间もないため、多くの地方はまだあまり熟知していませんが、幸いにも彼のドキュメントは多くて、例もとても豊富で、基本的に持参した例はすべて1つのapiとして呼び出すことができて、手も简単で、jsに対して少し基础の友达はすべてすぐに手に入れることができます.