【导语】:近日NASA发布了一个很有趣的活动,在你生日的那天哈勃望远镜看到的是一片什么样的宇宙?
美国NASA在1990年将哈勃太空望远镜送上宇宙。多年来,哈勃望远镜在太空里拍取了许多珍贵的图像,今年是哈勃望远镜服役将满30周年,NASA公开了366张珍贵图像,只要上官网选择你的出生日期,就能看到生日当天哈勃所拍下的宇宙图像。
官网地址
输入月份和天数就可以获取图片
作为一个程序员来说会点击直接下载吗。一张能够满足我们吗?
不可能的
那么接下来
用我们程序员的想法来获取图片。
首先
打开F12进入开发者模式进去瞧瞧,有个csv文件,干嘛的看看
哇哦,这不是我们有获取的 东西吗?直接下载吧。省时又不费力
链接都要了直接复制图片网址进行查看吧。OK 结束!
你以为昨晚这一步就完了。不,当然不是
这才是开始!
对csv进行处理,
已处理好进行处理
#_*_coding:utf-8_*_
#作者 : Deth
#创建时间 : 2020/3/30 23:18
#文件 : Hubble. py
# IDE : PyCharm
import requests
import pandas as pd
import time
def get_url(month,day):
"""
Image: 图片地址
Name:名字
Caption:简介
URL: html
Year:拍摄日期
Month:月份
Day: 天
"""
df = pd.read_csv('./data/Date.csv')
# print(df.columns)
try:
img_info = df[(df['Month']==month) & (df['Day']==day)].values.tolist()
downloadFile(name= img_info[0][2],url= img_info[0][1])
except:
print('日期错误,请重新输入日期:')
main()
def downloadFile(name, url):
headers = {'Proxy-Connection': 'keep-alive'}
r = requests.get(url, stream=True, headers=headers)
length = float(r.headers['content-length'])
print('图片大小','{:.2f}'.format(length/1024/1024),'M')
f = open('./image/%s.jpg'%name , 'wb')
count = 0
count_tmp = 0
time1 = time.time()
#下载完成才存到硬盘上,可以用Response.iter_content 来边下载边存硬盘
for chunk in r.iter_content(chunk_size=1024):
# print(chunk)
if chunk:
f.write(chunk)
count += len(chunk)
if time.time() - time1 > 2:
p = count / length * 100 #下载多少百分比
speed = (count - count_tmp) / 1024 / 1024 / 2 #,每秒下载速度
count_tmp = count
print(name + ': ' +'{:.2f}'.format(p) + '%' + ' 下载速度: ' + '{:.2f}'.format(speed) + 'M/S')
time1 = time.time()
f.close()
print('下载完成%s:'%name)
def main():
month = int(input('输入月份:'))
day = int(input('输入日期:'))
get_url(month,day)
if __name__ == '__main__':
main()
效果展示
结束
相关数据和代码都在百度网盘链接:
提取码:siaw