关于使用node.js抓取百度图片的可行性
发布于 11 年前 作者 whatispython 5760 次浏览 最后一次编辑是 8 年前

最近公司的一个项目即将上线,现在需要在每个城市预先插入一些图片数据,我的想法是通过百度图片解析页面上的image标签然后将图片存到本地然后再上传到我们自己的服务器上,请问有这方面经验的同学这种可行性,以及请推荐我相关的node组件(请求,解析html)。

13 回复

请求可以用 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字段。不过到时候我可以加个上传功能 -。 -

图片下载的功能在你这个项目里面实现了吗?

@whatispython

/**
 * 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

@whatispython

$ npm install spidex

里面有readme的。

我爬过,直接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…

回到顶部