我正在编写一个网站爬虫,从一个没有实际链接,只有可点击文本的ajax网站上获取一些特定内容。我只使用了大约一周的javascript,并使用CasperJS,因为它可以减少很多工作。
我遇到的问题是我正在编写多个函数,它们都做同样的事情,只是根据所在页面搜索不同的链接。所以我有:
function getLinks() {
var links = document.querySelectorAll('div.AjaxLink h3');
return Array.prototype.map.call(links, function(link) {
return link.innerText;
});
}
它是通过以下方式运行的:
casper.then(function() {
var myLinks = this.evaulate(getLinks);
/* ... link manipulation code code ... */
});
这个工作很好。显然,我不想有半打函数只是有不同的查询字符串。所以我想做的是:
function getLinks(findText) {
var links = document.querySelectorAll(findText);
return Array.prototype.map.call(links, function(link) {
return link.innerText;
});
}
然后我尝试通过以下方式运行它:
casper.then(function() {
var myLinks = getLinks('div.AjaxLink h3');
/* ... link manipulation code code ... */
});
findText变量已正确传入,但似乎查询选择器总是返回空的NodeList。
我做错了什么?document是在该函数内创建的空文档吗?