Я только начал использовать pjscrape и попробуйте запустить образец скребок, предусмотренный на http://nrabinowitz.github.io/pjscrape/#overview и назвал следующую команду в терминале, но он дал мне ошибки:Использование PhantomJS с pjscrape скрести динамически веб-контента
$ phantomjs /Applications/nrabinowitz-pjscrape-600e20a/pjscrape.js my_config.js
TypeError: undefined is not an object (evaluating 'phantom.args.length')
/Applications/nrabinowitz-pjscrape-600e20a/pjscrape.js:834 in global code ^Z
[6]+ Stopped phantomjs /Applications/nrabinowitz-pjscrape-600e20a/pjscrape.js my_config.js
Но потом я понял, что это, вероятно, потому, что в файле pjscrape.js он использует phantom.args.length
, который уже был заменен на system.args
в новых phantomJS. Таким образом, я изменил оригинальный pjscrape.js:
var system = require('system');
// make sure we have a config file
if (!system.args.length) {
// die
console.log('Usage: pjscrape.js <configfile.js> ...');
phantom.exit();
} else {
// load the config file(s)
system.args.forEach(function(configFile) {
if (!phantom.injectJs(configFile)) {
fail('Config file not found: ' + configFile);
}
});
}
Тогда я побежал ту же команду, но он дал мне следующие ошибки:
RangeError: Maximum call stack size exceeded.
undefined:0 in injectJs RangeError: Maximum call stack size exceeded.
undefined:0 in injectJs
/Applications/nrabinowitz-pjscrape-600e20a/pjscrape.js:844 :0 in forEach RangeError: Maximum call stack size exceeded.undefined:0 in injectJs
/Applications/nrabinowitz-pjscrape-600e20a/pjscrape.js:844 :0 in forEach RangeError: Maximum call stack size exceeded./Applications/nrabinowitz-pjscrape-600e20a/pjscrape.js:850 in global code :0 in injectJs
/Applications/nrabinowitz-pjscrape-600e20a/pjscrape.js:844 :0 in forEach RangeError: Maximum call stack size exceeded.undefined:0 in injectJs
/Applications/nrabinowitz-pjscrape-600e20a/pjscrape.js:844 :0 in forEach FATAL ERROR: No suites configured
Теперь я действительно не знаю, что это неправильно. Мой my_config.js (где я определил мой скребок с помощью pjscrape) выглядит следующим образом:
pjs.addSuite({
// url to scrape
url: 'http://en.wikipedia.org/wiki/List_of_towns_in_Vermont',
// selector to look for
scraper: '#sortable_table_id_0 tr td:nth-child(2)'
});
Может кто-то помочь мне понять, как исправить проблему? В конце концов, я хочу, чтобы иметь возможность очистить веб-сайт, где содержимое, которое мне нужно, генерируется калькулятором javascript, который принимает только один набор входов и генерирует по одному результату за раз. Но я также хочу ввести тысячи различных входов в калькулятор и получить огромную таблицу результатов.