Phantomjs page.content не получает содержимое страницы
Я использую Phantomjs для очистки веб-сайтов, которые используют JavaScript и Ajax для загрузки динамического контента.
У меня есть следующий код:
var page = require('webpage').create();
page.onError = function(msg, trace) {
var msgStack = ['ERROR: ' + msg];
if (trace && trace.length) {
msgStack.push('TRACE:');
trace.forEach(function(t) {
msgStack.push(' -> ' + t.file + ': ' + t.line + (t.function ? ' (in function "' + t.function +'")' : ''));
});
}
console.error(msgStack.join('\n'));
};
page.onConsoleMessage = function(msg, lineNum, sourceId) {
console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');
};
page.open('http://www.betexplorer.com/soccer/germany/oberliga-bayern-sud/wolfratshausen-unterhaching-ii/x8rBMAB8/', function () {
console.log(page.content);
phantom.exit();
});
Проблема в том, что этот код не получает исходный код, который я хочу.
Если вы введете URL-адрес через веб-браузер (например, Chrome) и прочитаете исходный код (динамический исходный код после выполнения вызовов JavaScript и Ajax) страницы, вы увидите, что исходный код веб-браузера и исходный код Phantomjs Код совершенно другой.
Но в этом случае мне нужен исходный код веб-браузера.
Обычно этот код Phantomjs извлекает исходный код, который мне нужен, но в случае этого URL (любого другого) Phantomjs не получает правильный исходный код.
Я предполагаю, что Phantomjs не знает, как обрабатывать вызовы JavaScript и Ajax, которые загружают динамический контент на эту страницу.
Я получаю эти ошибки при запуске кода:
ERROR: TypeError: 'undefined' is not a function (evaluating 'function(e){
this.pointer.x = e.pageX;
this.pointer.y = e.pageY;
}.bind(this)')
TRACE:
-> http://www.betexplorer.com/gres/tooltip.js?serial=1410131213: 207
-> http://www.betexplorer.com/gres/tooltip.js?serial=1410131213: 157
-> http://www.betexplorer.com/gres/tooltip.js?serial=1410131213: 310 (in function "tooltip")
-> http://www.betexplorer.com/soccer/germany/oberliga-bayern-sud/wolfratshausen-unterhaching-ii/x8rBMAB8/: 291
-> http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js: 2
-> http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js: 2
-> http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js: 2
-> http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js: 2
CONSOLE: Invalid App Id: Must be a number or numeric string representing the application id. (from line #undefined in "undefined")
CONSOLE: FB.getLoginStatus() called before calling FB.init(). (from line #undefined in "undefined")
Итак, как я могу получить динамический исходный код этой страницы (http://www.betexplorer.com/soccer/germany/oberliga-bayern-sud/wolfratshausen-unterhaching-ii/x8rBMAB8/) используя Phantomjs?