casperjs ajax请求,Casperjs ajax调用 - waitForResource和解析错误
Casperjs是一個很棒的工具.我已經(jīng)能夠理解某些基礎(chǔ)知識.但是,我正在努力解決兩個問題.首先,為了關(guān)閉原因,我將代碼分成幾個函數(shù).我得到一個解析錯誤.我已經(jīng)添加了選項verbose: true, logLevel: "debug",看它是否指出了行號,但我沒有得到任何結(jié)果.其次,我想做一個異步的ajax調(diào)用.我正在使用,waitFor但我讀了這篇文章是為了更有效的方式.如何設(shè)置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));
總結(jié)
以上是生活随笔為你收集整理的casperjs ajax请求,Casperjs ajax调用 - waitForResource和解析错误的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 当监理巡视发现问题后如何及时的采取相应的
- 下一篇: 环境检测LIMS提升环节检测精准性该从哪