Node下载百度首页Logo

上一篇文章中可以获取到了百度首页的代码,接下来就是找到对应的Logo,然后将他下载下来。其实很简单,拿到图片的路径,然后进行请求,获取到二进制数据,将其转换为Buffer类型,然后存到对应的本地路径,完成下载。
可以去百度首页,检查元素,看看那张图片对应的id,也就是说利用正则表达式,匹配百度代码中对应的id,然后进行分组,获取对应图片的路径,简单写了下匹配id的正则表达式,

1
2
let websiteReg = <img id=s_lg_img src="(\S+)"/;
let imgUrl = websiteReg.exec(websiteCode)[1];

其中imgUrl就是图片的链接地址,这样就可以利用正则表达式匹配出hostname和path,其正则表达式是:

1
2
3
let resultPathRe = /https:\/\/([^\/]*)(\/\S+)/;
resultHost = resultPathRe.exec(imgUrl)[1]; //图片主host
resultPath = resultPathRe.exec(imgUrl)[2]; //图片路径

什么都拿到了,接下来就很简单了,只要请求拿到数据就可以将他下载下来了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
let reqs = https.request(options, (res) => {
res.on('data', (d) => {
for (let i = 0; i < d.length; i++) {
imgDatas.push(d[i]);
}
})
res.on('end', () => {
imgDatas = new Buffer(imgDatas);
fs.writeFile('C:/Users/baidu.png', imgDatas, (err) => {
if (err) console.log(err);
console.log('success!');
});
});
});