我在幻影js中有错误? [英] I have Error in phantom js ?

查看:64
本文介绍了我在幻影js中有错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个幻像读取数据(Urls)并从网站获取png,但我的代码只读了一个网址????

//渲染多个网址到文件

var RenderUrlsToFile,arrayOfUrls,system;

system = require(system);

var Filetxt =/ home / ashesh / Documents / phantomjs-1.9。 1-linux-x86_64 / bin / Khodam / Log.txt;

/ *

呈现给定网址

@param数组网址到渲染

@param callbackPerUrl完成每个URL后调用的函数,包括最后一个URL

@param callbackFinal完成所有内容后调用的函数

* /

RenderUrlsToFile = function(urls,callbackPerUrl,callbackFinal){

var getFilename,next,page,retrieve,urlIndex,webpage;

urlIndex = 0 ;

webpage = require(网页);

page = null;

getFilename = function(){

返回rendermulti-+ urlIndex +。png;

};

next = function(status,url,file){

callbackPerUrl(status,url,file);

return retrieve();

} ;

retrieve = function(){

var url;

if(urls.length> 0){

url = urls.shift();

urlIndex ++;

page = webpage.create();

page.viewportSize = {

宽度:800,

身高:600

};

页.settings.userAgent =Phantom.js bot;

返回page.open(http://+ url,function(status){

var file;

file = getFilename();

if(status ===success){

return window.setTimeout((function() {

page.render(file);

返回next(status,url,file);

}),200);

}否则{

返回下一个(状态,网址,文件);

}

});

}否则{

return callbackFinal();

}

};

return retrieve();

};

arrayOfUrls = null;



if(system.args.length> 1){

arrayOfUrls = Array.prototype.slice.call(system.args,1);

} else {

console.log (用法:phantomjs render_multi_url.js [domain.name1,domain.name2,...]);

//我的错误在这里< ------

arrayOfUrls = Readfile(Filetxt);

}

RenderUrlsToFile(arrayOfUrls,(function(status,url,file){

if(status!==success){

返回console.log(无法渲染+ url +');

} else {

返回console.log(Rendered'+ url +'at'+ file +');

}

} ),function(){

返回phantom.exit();

});

函数Readfile(Filetxt){

var fs = require('fs');

var content ='',

f = null,

lines = null

尝试{

f = fs.open(Filetxt,r);

content = f.read();

} catch(e){

console.log(e);

}

if(f){

f.close();

}

if(content){

lines = content; //。分裂( \\\
);

//console.log(lines.length);

var fruits = [];

fruits.push(lines);

//返回水果;

//console.log(fruits);

fruits = content.split(\ n);

var s = []

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

{

//我的错误在这里< ------

s.push(fruits [i]);

返回s;

}

}

phantom.exit();

}

I have a filetxt that phantom read data (Urls) and get png from sites but my code read just one url????
// Render Multiple URLs to file
var RenderUrlsToFile, arrayOfUrls, system;
system = require("system");
var Filetxt="/home/ashesh/Documents/phantomjs-1.9.1-linux-x86_64/bin/Khodam/Log.txt";
/*
Render given urls
@param array of URLs to render
@param callbackPerUrl Function called after finishing each URL, including the last URL
@param callbackFinal Function called after finishing everything
*/
RenderUrlsToFile = function(urls, callbackPerUrl, callbackFinal) {
var getFilename, next, page, retrieve, urlIndex, webpage;
urlIndex = 0;
webpage = require("webpage");
page = null;
getFilename = function() {
return "rendermulti-" + urlIndex + ".png";
};
next = function(status, url, file) {
callbackPerUrl(status, url, file);
return retrieve();
};
retrieve = function() {
var url;
if (urls.length > 0) {
url = urls.shift();
urlIndex++;
page = webpage.create();
page.viewportSize = {
width: 800,
height: 600
};
page.settings.userAgent = "Phantom.js bot";
return page.open("http://" + url, function(status) {
var file;
file = getFilename();
if (status === "success") {
return window.setTimeout((function() {
page.render(file);
return next(status, url, file);
}), 200);
} else {
return next(status, url, file);
}
});
} else {
return callbackFinal();
}
};
return retrieve();
};
arrayOfUrls = null;

if (system.args.length > 1) {
arrayOfUrls = Array.prototype.slice.call(system.args, 1);
} else {
console.log("Usage: phantomjs render_multi_url.js [domain.name1, domain.name2, ...]");
// MY ERROR IS HERE <------
arrayOfUrls = Readfile(Filetxt);
}
RenderUrlsToFile(arrayOfUrls, (function(status, url, file) {
if (status !== "success") {
return console.log("Unable to render '" + url + "'");
} else {
return console.log("Rendered '" + url + "' at '" + file + "'");
}
}), function() {
return phantom.exit();
});
function Readfile(Filetxt){
var fs = require('fs');
var content = '',
f = null,
lines = null
try {
f = fs.open(Filetxt, "r");
content = f.read();
} catch (e) {
console.log(e);
}
if (f) {
f.close();
}
if (content) {
lines = content;//.split("\n");
//console.log(lines.length);
var fruits = [];
fruits.push(lines);
//return fruits;
//console.log(fruits);
fruits = content.split("\n");
var s = []
for (var i=0;i<fruits.length;i++)>
{
// MY ERROR IS HERE <------
s.push(fruits[i]);
return s;
}
}
phantom.exit();
}

推荐答案

感谢我的朋友,我发现了我的错误。

i应该写出(返回s;)(for)。

非常感谢。
Thanks my friend i find my error .
i should write (return s;) out of (for).
thanks lot .


我不知道是什么文件系统你正在使用的库,因为你缺少那个部分,但我猜你的f.read()只是读一行。您可能希望查找文件系统函数,看看是否可以在一次读取中读取整个文件,或者循环读取文件并将其全部读入缓冲区。
I don't know what filesystem library you are using, since you are missing that part, but I'm guessing that your "f.read()" is only reading a single line. You may want to look up the file system functions and see if you can read the entire file in a single read, or loop through the file and read it all into a buffer.


这篇关于我在幻影js中有错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆