import os
import re
import csv
import time
import requests
from PIL import Image
DEBUG = False
BASE_URL = "https://apod.nasa.gov/apod/"
HOME_URL = f"{BASE_URL}archivepix.html"
DATASET_PATH = os.path.join(".", "dataset")
DATASET_IMAGES_PATH = os.path.join(DATASET_PATH, "images")
# Creating the dataset folder if it does not exist.
if not os.path.exists(DATASET_IMAGES_PATH):
os.makedirs(DATASET_IMAGES_PATH, exist_ok=True)
SUBPAGE_PATTERN = r"href=\"(ap[^\.]+\.html)\""
IMG_DATE_PATTERN = r"\/ap(\d{2})(\d{2})(\d{2})\.html"
IMG_URL_PATTERN = r"<a href=\"(image[^\"]+)\""
TITLE_PATTERN = r"<title>\s*[^\-]+\-\s*([^<]+)"
EXPLANATION_PATTERN = r"Explanation:\s*<\/b>([^ъ]+)<b>.+picture:\s*<\/b>"
REM_TAGS_PATTERN = r"<[^>]+>"
IMG_SIZE = (600, 600)
def main(url):
html = requests.get(url).text
img_urls = re.findall(SUBPAGE_PATTERN, html)
metadatum = []
for i, img_url in enumerate(img_urls):
subpage_url = f"{BASE_URL}{img_url}"
html = requests.get(subpage_url).text
# Downloading the image
year, month, day = re.findall(IMG_DATE_PATTERN, subpage_url)[0]
img_path = os.path.join(DATASET_IMAGES_PATH, f"{year}{month}{day}.jpg")
print(f"Image - {img_path}: Downloading...")
try:
download_img(html, destination=img_path)
except Exception:
print("An error occurred while downloading the image file!")
continue
print(f"Image - {img_path}: Downloaded!")
# Extracting metadata
metadata = extract_metadata(html, image_name=img_path)
print(f"Metadata: {metadata}")
print()
metadatum.append(metadata)
if DEBUG:
# Save only two images
if i == 1:
break
create_csv(
metadatum=metadatum,
destination=os.path.join(DATASET_PATH, "metadata.csv")
)
def download_img(html, destination):
# Getting the image url
img_url = re.findall(IMG_URL_PATTERN, html)[0]
# Downloading the image
img = requests.get(f"{BASE_URL}{img_url}").content
# Downloading the image
with open(destination, 'wb') as f:
f.write(img)
# Opening the image
im = Image.open(destination)
# Verifying if the image is RGB
if im.mode != "RGB":
# Resizing the downloaded image and saving it
im = im.resize(IMG_SIZE)
im.save(destination)
def extract_metadata(html, image_name):
title = re.findall(TITLE_PATTERN, html)[0].strip()
explanation = re.findall(EXPLANATION_PATTERN, html)[0]
explanation = re.sub(REM_TAGS_PATTERN, "", explanation)
explanation = re.sub("\s+", " ", explanation)
explanation = explanation.strip()
return {
"file": image_name.split(os.path.sep)[-1],
"title": title,
"explanation": explanation,
}
def create_csv(
metadatum,
destination,
column_names=["file", "title", "explanation"]
):
with open(destination, "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=column_names, )
writer.writeheader()
writer.writerows(metadatum)
if __name__ == "__main__":
start_time = time.time()
main(HOME_URL)
print(f"Elapsed time: {time.time() - start_time:.2f} seconds")
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
NASA天文图像日志数据集 数据说明: NASA每天都会在其天文图像日志页面上发布一幅图像。该数据集包含2015.01.01至2022.10.03的所有图像。 有些日子缺失只是因为上传的文件不是图像而是视频。 内容: ·图像/-包含2015.01.01至2022.10.03期间所有2481张600x600图像的文件夹。 ·metadata.csV-默认分离文件,其中包含所有图像的文件名及其各自的标题和解释。解释是对图像是如何/为什么何时制作的描述。 ·scrape.py-生成images/文件夹和metadata.csv文件的脚本。
资源推荐
资源详情
资源评论












格式:pdf 资源大小:12.6MB 页数:127
















收起资源包目录





































































































共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论

- 狼熙2024-10-23资源很好用,有较大的参考价值,资源不错,支持一下。

地理探险家
- 粉丝: 1394
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 毕设&课设:智慧型报告厅——我的毕业设计项目.zip
- 毕设&课设:智慧校园之家长子系统.,计算机毕业设计,毕设,Java毕业设计,SpringBoot,SSM,小程序.zip
- 中国软件杯赛事中的计算机视觉前端框架
- 【自然语言处理】基于中文分词的文本相似度动态规划算法优化:高效准确的论文防抄袭系统设计与实现(论文复现含详细代码及解释)
- 这篇文章详细介绍了针对室内3D物体检测的主动学习框架,旨在解决室内场景下3D物体检测面临的独特挑战,包括样本少、类别多、类别不平衡严重以及场景类型和类内差异大的问题(论文复现含详细代码及解释)
- 【电力电子与控制工程】基于准PR+改进重复控制的光伏逆变器谐波抑制与动态响应优化:复合控制策略的MATLAB仿真及硬件实现(论文复现含详细代码及解释)
- 机器学习与深度学习 Python实现基于PSO-Transformer粒子群优化算法(PSO)优化Transformer编码器进行多特征分类预测的详细项目实例(含完整的程序,GUI设计和代码详解)
- 【神经网络同步与稳定性】几类比例时滞神经网络的同步性和稳定性研究:理论分析、MATLAB代码复现及应用示例(论文复现含详细代码及解释)
- 详细研究了交错并联Buck变换器的工作原理、性能优势及其仿真实现(论文复现含详细代码及解释)
- 相似性搜索及其应用进展
- 深度学习与计算机视觉:从入门到精通之路详解
- 电力电子交错并联双向Buck/Boost集成LLC谐振型三端口直流变换器设计与仿真:新能源微电网高效功率转换系统(论文复现含详细代码及解释)
- 电力电子交错并联型光伏储能双向DC-DC变换器研究:解决电流不均与提高系统稳定性(论文复现含详细代码及解释)
- 变化检测-基于全卷积孪生网络实现的变化检测算法-附项目源码-优质项目源码.zip
- 基于计算机视觉技术的辅助驾驶软件杯项目
- 2019 年度广东工业大学计算机视觉课程作业
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
