[英]CasperJS not reading tables inside a page
我有一個 URL,它的表格有一個中心 HTML 元素,里面有大約 200 個表格。 HTML的結構如下:
我擁有的 CasperJS 代碼如下:
var extractData = function (url, i) {
casper.thenOpen(url, function () {
casper.waitForSelector('form[action="/results"]', function () {
var tables = this.evaluate(function () {
return document.querySelectorAll('form[action="/results"] center table:not(:first-child)');
});
for (var j = 0; j <= tables.length; j++) {
fs.write('page_' + i + '.txt', tables[j].innerHTML, 'a+');
}
});
});
};
當我運行我的代碼時,我總是得到第一個表的 HTML 並且我得到以下表的 rest 的錯誤:
200
TypeError: null is not an object (evaluating 'tables[j].innerHTML')
/var/www/phantomjs:/code/test.js:69
/var/www/phantomjs:/platform/casper.js:1685 in runStep
/var/www/phantomjs:/platform/casper.js:414 in checkStep
請問我該如何解決這個問題,我的意思是,如果 capserJS 讀取頁面的速度比它需要加載的時間快,為什么我看到 200 作為中心 HTML 元素內的表數是正確的?
謝謝。
這似乎是一個錯字。 在循環中你應該寫:
// ...
for (var j = 0; j <= tables.length; j++) {
fs.write('page_' + i + '.txt', tables[j].innerHTML, 'a+');
}
你寫了table[j].innerHTML
但循環了tables
。 所以tables[j]
是正確的。
這就是為什么我只是復制和粘貼變量名來避免這種錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.