首页 > 其他分享 >利用py爬取生日的那天哈勃望远镜拍到了什么?

利用py爬取生日的那天哈勃望远镜拍到了什么?

时间:2022-12-28 17:36:58浏览次数:80  
标签:__ url self py 爬取 拍到 哈勃 data mon

于1990年4月发射升空的哈勃太空望远镜迎来了升空30周年纪念。

为此,美国宇航局(NASA)近日在其官网上发起一项活动——“哈勃望远镜在你生日那天看到了什么?”

NASA邀请大家搜索自己生日当天哈勃望远镜所拍摄到的太空,并在社交媒体上分享出来。

1995年4月1日,哈勃望远镜拍到了它最负盛名的照片之一——天鹰星云的“创世之柱”。图中的三个冷气柱,犹如三座高耸的山峰,孕育着恒星的诞生。由于“创世之柱”在流行文化中影响巨大,多年以后,NASA还对它进行了补拍。

2004年2月29日,作为人马光窗掩凌系外行星搜寻计划(Sagittarius Window Eclipsing Extrasolar Planet Search,简称为SWEEPS计划)的一部分,哈勃望远镜拍摄了距离我们2.6万光年之外的群星。

原来,我们每个人都有属于自己的一片星空。那么你想知道自己生日那天,哈勃望远镜拍到了什么?接下来让我们来用爬虫来爬取下看看。

首先让我们输入网址:

​https://www.nasa.gov/content/goddard/what-did-hubble-see-on-your-birthday/​

利用py爬取生日的那天哈勃望远镜拍到了什么?_xml

把最后请求的网址提取出来进行测试,即:

​https://imagine.gsfc.nasa.gov/hst_bday/may-20,​

​https://imagine.gsfc.nasa.gov/hst_bday/may-21,​

均可正常的请求的页面,以此类推,地址应该为:

​https://imagine.gsfc.nasa.gov/hst_bday/(英文月份)-日期。​

请求页面的图片提取使用bs4的话应该是:

利用py爬取生日的那天哈勃望远镜拍到了什么?_xml_02

应该使用

 .addthis_inline_share_toolbox的

data-media 可以提取到拍摄的图片,然后就让我们进入到编码环节。具体代码如下:

import requests
from bs4 import BeautifulSoup
import time
import os
#防止请求超时报错
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)




class Nasa(object):


def __init__(self):
self.base_url = "https://imagine.gsfc.nasa.gov/hst_bday/"
self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"}


def send_request(self, url, params={}):
time.sleep(3)
response = requests.get(url, headers=self.headers)
return response.content.decode('utf-8')


def analysis_data(self, data):
# 1.转换类型
soup = BeautifulSoup(data, "lxml")
# 2.获取标签--列表
data_list = soup.select(".addthis_inline_share_toolbox")
#print(data_list[0]['data-media'])
return data_list[0]['data-media']
# 3.将里面的每一行的数据 提取出来


# 写入本地文件


def write_file(self, data,title):
dir_name = "birthday"
isExists = os.path.exists(dir_name)
# 判断结果
if not isExists:
# 如果不存在则创建目录
# 创建目录操作函数
os.makedirs(dir_name)
with open(dir_name+"/"+title+ ".jpg", "wb") as f: # 新建一个jpg文件,用日期命名
f.write(data) # 写入二进制数据
print(title+"保存完成!") # 保存完成!


def start_work(self):
# https://imagine.gsfc.nasa.gov/hst_bday/january-21
the_month = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October","November", "December"}
Day_31 = {"January", "March", "May", "July", "August", "October", "December"}
Day_30 = {"April", "June", "September", "November"}
for mon in the_month:
if mon in Day_31:
total_number = 32
elif mon in Day_30:
total_number = 31
else:
total_number = 30
#print(mon)
for i in range(1,total_number):
#print(self.base_url+mon+'-'+str(i))
data = self.send_request(self.base_url+mon+'-'+str(i))
#print(data)
img_url=self.analysis_data(data)
res = requests.get(img_url,verify=False).content
self.write_file(res,mon+'-'+str(i))




if __name__ == '__main__':
tool = Nasa()
tool.start_work()

然后我们右击运行代码,就可以看到当前文件夹多了一个birthday文件夹,所有的图片都下载到文件夹内了,以上就是今天给大家分享的内容,NASA源码获取获取请在后台回复:NASA生日图片。更多精品教程请关注公众号spiderBy,回复“Python教程”,即可获取*智基础+就业班课程。




标签:__,url,self,py,爬取,拍到,哈勃,data,mon
From: https://blog.51cto.com/u_15924937/5975827

相关文章

  • 【Python 库】bs4的使用
    和lxml一样,BeautifulSoup也是一个HTML/XML的解析器,主要的功能也是如何解析和提取HTML/XML数据。BeautifulSoup,是一个第三方的库,所以使用之前需要安装,安装方法,输入cmd,调出......
  • python运行环境以及编辑器介绍
    Hello呀,EveryOne,在上次更新了第一篇的公众号推文后,小编也如约的和大家玩起了消失,但是工作还是要进行的,这不又乖乖的回来码字了,废话不再多说,今个带大家来敲下python编写的第......
  • Python爬取意林杂志所有期刊文章
    可能很多人对这个意林杂志比较陌生,但是对于小编来说,那可是满满的回忆。记得我们上中学那时候读过的意林,那可是一本接着一本,其中有很多令人感动的故事,一直被温暖,被治愈。接下......
  • python爬取公众号链接里面的图片
    话不多说,步入今天文章的分享内容,今天给大家带来的是~~爬取微信公众号文章里面的图片。爬虫代码:#coding:utf-8#__auth__="maiz"#__date__="2021/3/27"importosimport......
  • Python中使用xpath一键获取各国国旗
    国旗是一个国家的主权意识不断增强后必然的产物,国旗是国家的一种标志性旗帜,是国家的象征。代表着一个国家的主权和民族的尊严。每个国家的国旗都由特有的颜色和图案构成,这些......
  • py爬取当当网前500畅销书,送给书荒的你
    最近和朋友聊天,讨论到读书的问题,说是读书到底有什么用?我半开玩笑的给他讲了一个故事。男孩将女孩送到宿舍楼下,看着一路上两人始终保持着的那一步的距离,男孩终于鼓起勇气,说道......
  • 使用py爬取复产后的鹅厂都在招聘哪些职位
    hello呀,各位小伙伴,今天是五月的第二天,不知道大家是在家里wifi,空调,西瓜呢,还是在拥挤的景区看着人山人海!反正小编是穿着大裤衩,坐在马路边的沙滩上,啜一口摆在身边的饮料,享受......
  • Python一键查询 ICP 备案详情
    做搜索引擎优化的都时长面临一个问题,就是网站备案到底对seo是否有影响呢,今天将为大家仔细分析网站备案,到底对SEO有没有影响?首先说下网站备案的目的、是为了防止在网上从事......
  • 使用Python的asyncio模块异步下载整站壁纸
    这篇文章主要给大家介绍关于Python中asyncio模块的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学......
  • 使用python爬取B站视频
    B站之所以火,是因为趣味与知识并存。正如一句“你在B站看番,我在B站学习”,B站还是有一些质量比较好的学习视频。当你在B站上看到喜欢的视频想保存下来时,怎么办呢?我相信很多逛B......