批量爬取哈勃望远镜在生日当天拍摄的宇宙照片

NASA公布了2019年哈勃望远镜每一天拍摄的宇宙照片(除了2月29日),由于网站在国外,而且有一些图片的清晰度不够高,所以利用爬虫爬取所有图片并且通过AI修复为 6X

5.31

5.31

9.21

9.21

2.19

2.19

3.27

3.27

不想看技术相关的直接拉到最下面查看下载地址。

​ 首先分析地址找到了data.csv,所有图片的地址都在里面。那么第一步提取其中的地址:

读取文件

1
2
3
const rl = readline.createInterface({
input: fs.createReadStream(path.join(__dirname, "./data.csv")),
});

格式化地址

1
2
3
4
5
6
7
8
9
10
11
12
rl.on("line", (line) => {
const res = line.split(",");
const len = res.length;
const date = new Date(res[0]);
list.push({
name: `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`,
title: res[2],
shootingDate: res[len - 1],
url: `https://imagine.gsfc.nasa.gov/hst_bday/images/${res[1]}`,
directions: res.slice(3, len - 2).join(" "),
});
});

地址格式化之后按照时间排一下顺序,然后下载就可以了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
rl.on("close", function () {
list.splice(0, 1);
list.sort((t1) => (t2) => new Date(t1).getTime() - new Date(t2).getTime());
fs.writeFileSync(path.join(__dirname, "res.json"), JSON.stringify(list));
const finishDownloadList = fs.readdirSync(path.join(__dirname, "download"));
list
.filter((item) => !finishDownloadList.includes(item.name))
.forEach(async (item) => {
console.log(item.name);
console.log(item.url);
await download(item.url, path.join(__dirname, "download", item.name), {
filename: `${item.name}-${item.title}${path.extname(item.url)}`,
});
});
});

然后使用waifu2x-caffe进行图片的放大修复。在这我自定义添加后缀为-ai

经过长时间的运损后把已经生成的图片进行分类,一个日期的放到一个文件夹中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
files.forEach((file) => {
const arr = file.split("-");
const dir = arr.slice(0, 3).join("-");
const name = arr.slice(3).join("_");
const fileName = `${dir}_${name}`;
fs.renameSync(
path.resolve(__dirname, "download", "1", file),
path.resolve(__dirname, "download", "1", fileName)
);
const p = path.resolve(__dirname, "download", dir);
fs.ensureDirSync(p);
fs.copyFileSync(
path.resolve(__dirname, "download", "1", fileName),
path.resolve(p, fileName)
);
});

​ 这样我们就获取了NASA公布的生日当天哈勃望远镜拍摄的照片。

​ 技术细节基本没人看,所以在这给大家提供现成的下载地址:

链接:https://pan.baidu.com/s/1lo__x7hqEydZKtsBZh9-HA
提取码:afum

压缩包解压密码均为:2077tech.com

baiduwangpan

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×