最近公司的一个项目即将上线,现在需要在每个城市预先插入一些图片数据,我的想法是通过百度图片解析页面上的image标签然后将图片存到本地然后再上传到我们自己的服务器上,请问有这方面经验的同学这种可行性,以及请推荐我相关的node组件(请求,解析html)。
请求可以用 spidex
。
然后解析html可以用 cheerio
。
可以看下这里http://xcoder.in/2013/12/28/xplan-spider-doc/#Cheerio%E6%A8%A1%E5%9D%97*
这个不知道对你有木有什么帮助 http://www.9958.pw/post/js_html_img_url
谢谢你的回复,那spidex可以实现上传文件吗?
@whatispython 其实上传就是加个header字段。不过到时候我可以加个上传功能 -。 -
图片下载的功能在你这个项目里面实现了吗?
/**
* Created by XadillaX on 14-3-31.
*/
var spidex = require("spidex");
var fs = require("fs");
spidex.get("http://cnodejs.org/public/images/logo.png", function(html, status, respHeader) {
console.log(html);
fs.writeFile("a.png", html, { encoding: "binary" });
}, "binary");
@XadillaX 太好了,谢谢!!
@XadillaX 可以把你的哪个项目发给我吗?我这里访问不了github
我爬过,直接http下载,没有任何问题。spidex是一个爬虫,不只是爬图片用的,对你的需求多余了 var fs = require(“fs”); var http = require(“http”)
function downloadImag(url){ var date = new Date(); var file_name = (date.getMonth()+1).toString() + ‘-’ + date.getDate().toString()+"-"+date.getTime(); file_name += ‘.jpg’; var file = fs.createWriteStream("./tmp/"+file_name); http.get(url,function(res) { console.log(res.headers)
res.on('data',function(data) {
file.write(data);
}).on('end',function() {
file.end();
console.log('download success');
});
});
}
再说一下,解析url用正则表达式就行了,不用那么多组件。
ta yao xian jiexi html de…