Я пытаюсь использовать запрос пакетов Node.js и jsdom для очистки веб-страниц, и я хочу знать, как я могу отправлять формы и получать их ответы.Я не уверен, возможно ли это с jsdom или другим модулем, но я знаю, что запрос поддерживает куки.
Следующий код демонстрирует, как я использую jsdom (вместе с request и jQuery) для получения иразбирать веб-страницу (в данном случае домашнюю страницу Википедии).(Обратите внимание, что этот код адаптирован из кода jquery-request.js из этого урока http://blog.nodejitsu.com/jsdom-jquery-in-5-lines-on-nodejs)
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();
);
});
});
Приведенный выше код печатает HTML-код из формы поиска в Википедии, а затем «Дерево», значение, которое я установилполе searchInput для хранения. Конечно, здесь метод click () на самом деле ничего не делает, потому что jQuery не работает в браузере, я даже не знаю, поддерживает ли jsdom какой-либо вид обработки событий.
Есть ли какой-нибудь модуль, который может помочь мне взаимодействовать с веб-страницами таким же образом или аналогичным образом, не являющимся jQuery? Это можно сделать в jsdom?
Заранее спасибо!