casperjs ajax请求,Casperjs ajax调用 - waitForResource和解析错误

这篇博客探讨了在使用CasperJS时遇到的两个问题:一是如何定位并解决出现的解析错误,尽管已设置了verbose和logLevel选项;二是如何有效地进行异步AJAX调用,作者尝试使用waitForResource来跟踪请求。博客中提供了代码示例,展示了如何组织代码以实现页面滚动和元素抓取,并讨论了优化异步处理的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Casperjs是一个很棒的工具.我已经能够理解某些基础知识.但是,我正在努力解决两个问题.首先,为了关闭原因,我将代码分成几个函数.我得到一个解析错误.我已经添加了选项verbose: true, logLevel: "debug",看它是否指出了行号,但我没有得到任何结果.其次,我想做一个异步的ajax调用.我正在使用,waitFor但我读了这篇文章是为了更有效的方式.如何设置waitForResource()跟踪AJAX请求?以及如何显示解析错误行?

var urls = ['http://9gag.tv/'];

var casper = require('casper').create({

verbose: true,

logLevel: "debug"

});

function getNumberOfItems(casper) {

return casper.getElementsInfo(".listview .badge-grid-item").length;

}

function tryAndScroll(casper) {

casper.page.scrollPosition = { top: casper.page.scrollPosition["top"] + 4000, left: 0 };

var info = casper.getElementInfo('.badge-post-grid-load-more');

if (info.visible) {

var curItems = getNumberOfItems(casper);

if( curItems <= 60 ) {

casper.waitFor(function check(){

return curItems != getNumberOfItems(casper);

}, function then(){

tryAndScroll(this);

}, function onTimeout(){

this.echo("Timout reached");

}, 10000);

}

} else {

casper.echo("no more items");

}

}

function combineArrays(x, y) {

var result = [];

for(var i = 0, i < page_links.length; i++) {

result[i] = {};

result[i].page_link = x[i];

result[i].video_link = y[i];

}

return result;

}

function linkScraper(x){

var page_links = [];

var youtube = [];

for (var i = 0; i < x.length; i++)

{ // start for loop

casper.thenOpen(x[i], function() {

//Scroll down for elements

tryAndScroll(this);

casper.then(function() {

this.getElementsInfo('.title').forEach(function(element) {

// skip elements that don't have a href attribute...

if (!element.attributes.href) {

return;

}

page_links.push( element["attributes"]["href"] );

casper.thenOpen(element.attributes.href, function() {

this.click('.responsivewrapper');

}).then(function(){

casper.each(this.getElementsInfo('.badge-youtube-player'), function(casper, element, j) {

youtube.push( element["attributes"]["src"] );

});

})localhost;

});

});

});

}

return combineArrays(page_links,youtube);

}

function stringifyResult(webpages){

//Pass link array to linkScraper

var linksArr = linkScraper.call(this, webpages);

//send results to php page

server = "http://localhost:8181/hashtag_pull/lib/9GagPrivateApi.php";

this.waitFor( function() {

response = this.evaluate(function() {

$.ajax({

type: "POST",

url: server,

data: JSON.stringify(linksArr),

//dataType: 'json',

contentType: "application/json",

success: function (data) {

this.echo("All done.");

return this.exit();

//return data.responseText;

},

error: function (xhr,status,error){

return this.echo(error);

}

});

});

});

}

casper.start().then(function() {

this.echo("Starting");

});

casper.userAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X)');

casper.run(stringifyResult.call(this, urls));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值