簡體   English   中英

CasperJS 不讀取頁面內的表格

[英]CasperJS not reading tables inside a page

我有一個 URL,它的表格有一個中心 HTML 元素,里面有大約 200 個表格。 HTML的結構如下:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM