我需要获取网站中可用的列表项,列出分页样式中的项目。我将在每个页面上提取项目的信息。我使用settimeout(function(){... code ...},5000)编写了一个javascript代码,并在firefox Web控制台中运行此代码。该脚本获取页面中的所有项目,一旦完成,脚本通过执行超链接“next”的click()方法提交页面。这将继续,直到页面在页面中具有“下一步”超链接(在最后一页仅“后退”超链接,如果存在)。在每个页面提交我超时它为5秒。
我在firefox webconsole中执行了这段代码,这次成功运行并获取第一页结果,然后提交页面,下一页也加载了。但是,问题是,一旦提交页面,脚本就会停止。如何在下一页加载后连续运行此脚本?有没有其他方法来实现此功能?
var inc=0;
var ids;
var main=function(){
console.log("attempiting..............."+inc);
var i=0;
{
ids[inc]=b();//function, fetch the items from the page
console.log(ids);
var more=document.getElementById("m_more_item");
if(more){
//next link is there
var cli=more.getElementsByTagName("a");
console.log("navigating to next page "+cli[0]);
inc++;
setTimeout(main,5000); //I tried placing this after click, but didnt work!
cli[0].click(); //submitting...
} else {
//last page reached, exiting...
console.log("exit1-> total items fetched are: "+ids);
return ids;
}
}
};
main();
问候
V
答案 0 :(得分:0)
setTimeout调用使你的函数递归,并保持循环,这应该工作。
setTimeout(cli[0].click, 5000);
干杯。
编辑: 评论很长,所以我将其添加为答案。
你可以在分离的页面中使用AJAX调用首先用AJAX调用页面,使用start = 1,并且在此请求成功时解析数据并根据需要收集信息,并且不要忘记为下一个请求保留lastItemIndex并发布第二次AJAX调用成功时,另一个AJAX调用需要的信息,首先是start = lastItemIndex + 1。
这些调用应该做你想要的。
我建议使用jQuery,因为调用AJAX和解析响应很容易。