私はNode.jsパッケージのリクエストとjsdomを使ってウェブページを掻き集めようとしています。フォームを提出して回答を得る方法を知りたいと思います。 jsdomや他のモジュールでこれが可能かどうかはわかりませんが、リクエストがクッキーをサポートしていることはわかります。jsdomフォーム提出ですか?
次のコードは、jsdom(requestおよびjQueryとともに)を使用してWebページ(この場合はWikipediaのホームページ)を取得および解析する方法を示しています。上記のコードは、ウィキペディアの検索フォームは、「ウッド」、私はsearchInputフィールドを設定した値からHTMLを出力します
var request = require('request'),
jsdom = require('jsdom'),
url = 'http://www.wikipedia.org';
request({ uri:url }, function (error, response, body) {
if (error && response.statusCode !== 200) {
console.log('Error when contacting '+url);
}
jsdom.env({
html: body,
scripts: [
'http://code.jquery.com/jquery-1.5.min.js'
]
}, function (err, window) {
var $ = window.jQuery,
// jQuery is now loaded on the jsdom window created from 'agent.body'
$searchform = $('#searchform'); //search form jQuery object
$('#searchInput').val('Wood');
console.log('form HTML is ' + $searchform.html(),
'search value is ' + $('#searchInput').val()
//how I'd like to submit the search form
$('#searchform .searchButton').click();
);
});
});
(このコードは、このチュートリアルhttp://blog.nodejitsu.com/jsdom-jquery-in-5-lines-on-nodejsからjqueryの-request.jsコードから構成されていることに注意してください)含有すること。もちろん、click()メソッドは実際には何もしません.jQueryがブラウザで動作していないためです。 jsdomがあらゆる種類のイベント処理をサポートしているかどうかはわかりません。
この方法で、または同様の非jQueryの方法でWebページとやりとりするのに役立つモジュールはありますか?これはjsdomで行うことができますか?
ありがとうございます!
フォーム上で ')('提出してください。 – fent
@DeaDEnD お返事ありがとうございます。 私が不明な場合は申し訳ありませんが、私が使用している方法は実際には問題ではありません。jsdomでエミュレートされている環境です。私が使用している方法では、jsdomは単純にページ上のHTMLを解析し、結果として得られるDOMへのインタフェースを提供しています。 このように、click()またはsubmit()のどちらを使用しても、jsdomはものを見ているので、これらのハンドラは存在しません。 – Aaron