0
我必须浏览网站上的所有页面,并检查每个页面上的元素。这必须以递归方式进行,我选择使用PhantomJS来完成。所以,我基本上有这样/这样的代码在main.js
:用phantomjs递归地浏览网页
var page = require('webpage').create();
var allUrls = [];
var pageCheck = function(url) {
page.open(url, function(success) {
page.evaluate(function(allUrls, nextPage) {
// crawl all links, and if they are from this site ..
// add them to the allUrls array ..
// then check the page for the element ..
// and go to next eventual page ..
setTimeout(nextPage, 250);
}, allUrls, nextPage);
});
};
var nextPage = function() {
var nextUrl = allUrls.unshift();
if(nextUrl) pageCheck(nextUrl);
};
pageCheck('http://example.com/');
,我调用此方法phantomjs main.js
。
但我看到消息“无法找到变量...”。当我清除所有 - 我现在看到Can't find variable: pageCheck
我该怎么做? ... PhantomJS示波器的所有这些东西是什么? ...
的[找不到变量:网页中PhantomJS]可能的复制(http://stackoverflow.com/questions/32954786/cant-find-variable- page-in-phantomjs) –
感谢您的快速回复,但是我在第一次访问'allUrls'和'nextPage'时无法访问'page.evaluate'内容。但我通过将它们作为参数传递给'page.evaluate'来解决这些问题。问题是这里有两个功能,而且他们似乎没有看到对方? ......或者至少这就是它对我来说...... –
正如我在回答结束时所说的,你不能将函数传递到页面上下文中。我的答案的第一部分提供了一种适用于您的案例的解决方法。 –