Я заполняю и отправляю форму с помощью PhantomJS, а затем выводя результирующую страницу. Дело в том, что я понятия не имею, если эта вещь вообще представлена.PhantomJS: отправьте форму
Я печатаю результирующую страницу, но это то же самое, что и исходная страница. Я не знаю, связано ли это с тем, что он перенаправляет обратно, или я не отправил его, или мне нужно подождать дольше или или. В реальном браузере он отправляет GET и получает cookie, который он использует для отправки большего количества GETS, прежде чем в конечном итоге получит окончательный результат - данные полета.
Я скопировал этот пример How to submit a form using PhantomJS, используя различные функции url и page.evaluate.
var page = new WebPage(), testindex = 0, loadInProgress = false;
page.onConsoleMessage = function(msg) {
console.log(msg);
};
page.onLoadStarted = function() {
loadInProgress = true;
console.log("load started");
};
page.onLoadFinished = function() {
loadInProgress = false;
console.log("load finished");
};
var steps = [
function() {
//Load Login Page
page.open("http://www.klm.com/travel/dk_da/index.htm");
},
function() {
//Enter Credentials
page.evaluate(function() {
$("#ebt-origin-place").val("CPH");
$("#ebt-destination-place").val("CDG");
$("#ebt-departure-date").val("1/5/2013");
$("#ebt-return-date").val("10/5/2013");
});
},
function() {
//Login
page.evaluate(function() {
$('#ebt-flightsearch-submit').click() ;
# also tried:
# $('#ebt-flight-searchform').submit();
});
},
function() {
// Output content of page to stdout after form has been submitted
page.evaluate(function() {
console.log(document.querySelectorAll('html')[0].outerHTML);
});
}
];
interval = setInterval(function() {
if (!loadInProgress && typeof steps[testindex] == "function") {
console.log("step " + (testindex + 1));
steps[testindex]();
testindex++;
}
if (typeof steps[testindex] != "function") {
console.log("test complete!");
phantom.exit();
}
}, 50);
Возможно, вы захотите попробовать CasperJS - он работает с Phantom, чтобы сделать его немного более дружелюбным. –
Я предполагаю, что я не уверен, что с этой страницей что-нибудь будет работать. Как будто они активно препятствуют попыткам соскабливания. PhantomJs - четвертая вещь, которую я пытаюсь. – user984003
Использование Каспера, пауза около 400 мс между действиями, изменение User Agent на что-то анонимное, например. «Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.28.10 (KHTML, например, Gecko) Версия/6.0.3 Safari/536.28.10 '(это на Webkit, таком как Phantom, но совпадает с любым пользователем Safari на OSX 10.8.3), будет удивлен, если это не сработает. –