我想從CasperJS的網站上抓取不同網頁的HTML鏈接。在CapserJS中使用document.querySelectorAll的正確方法是什麼?
在我的瀏覽器地址欄(Firefox/Chrome)中,這項工作非常好,並打開我正在尋找的所有鏈接。
javascript:document.querySelectorAll('a[href^="/page"]').click();
然而,當我嘗試運行使用下面的代碼CasperJS類似的東西,我得到了很多不屬於上述一致的錯誤。
var pageNodes = this.evaluate(function() {
return document.querySelectorAll('a[href^="/page"]');
});
console.log(typeof(pageNodes)); //Shows object
console.log(pageNodes.length); //Shows 11, which is correct
var links = [];
for(var i = 0; i < pageNodes.length; i++) {
console.log(i);
console.log(pageNodes[i].href);
links.push(pageNodes[i].href);
}; //pageNode[0].href shows the correct link. pageNode[1] is a null for some reason when it shouldn't be!
我也試過上面的數組原型,但結果相同!任何人都可以幫我弄清楚什麼是錯的?
var pageArray = this.evaluate(function(pageNodes) {
return Array.prototype.splice(pageNodes, 0);
}); //Gives the same problem, since pagesNodes[1] is null.
你錯過了在線#3關閉paren – rgthree
糟糕。在輸入問題時輸入錯字。問題仍然存在.... – user2843816