Node.js 패키지 요청과 jsdom을 사용하여 웹 페이지를 긁어 내려고합니다. 양식을 제출하고 응답을받을 수있는 방법을 알고 싶습니다. 이 jsdom 또는 다른 모듈을 사용할 수 있는지 확실하지 않지만 요청 쿠키를 지원하는지 알고 있습니다.jsdom 양식 제출?
다음 코드는 jsdom (request 및 jQuery와 함께)을 사용하여 웹 페이지 (이 경우 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 코드에서 적응합니다) 포함하다. 물론 jQuery가 브라우저에서 작동하지 않기 때문에 click() 메서드는 실제로 아무 것도하지 않습니다. jsdom이 모든 종류의 이벤트 처리를 지원하는지 여부조차 모르겠습니다.
이와 같은 방법으로 웹 페이지와 상호 작용할 수있는 모듈이 있습니까? 아니면 비 jQuery가 아닌 방식으로 모듈을 사용할 수 있습니까? 이것은 jsdom에서 끝날 수 있습니까?
미리 감사드립니다.
'submit()'을 사용해보십시오. – fent
@DeaDEnD 응답 해 주셔서 감사합니다. 내가 명확하지 않다면 미안하지만 사용하는 방법은 실제로 여기서 문제가되지 않습니다. jsdom에서 에뮬레이트 된 환경입니다. 내가 사용하고있는 방식으로 jsdom은 단순히 페이지의 HTML을 구문 분석하고 결과 DOM에 인터페이스를 제공한다. 따라서 click() 또는 submit()을 사용하든 상관없이 jsdom이 볼 수있는 것처럼 처리기가 존재하지 않아 효과가 없습니다. – Aaron