【python爬虫】Python爬取+PR绘制你出生那日的星图

起因

老妈最近因为某些事情去档案处查了自己的资料,发现真实出生时间和身份证上的不一样。刚好最近临近她的生日,想自己做一些礼物送给她,就在网上查了一下她出生日的星图,准备做一个她出生那天的星图变化的小视频送给她。

实践

在网上找了星图的网站,发现这个网站 https://www.heavens-above.com/能查到每日的星图,估计是根据时间计算了轨道之类的,天文方面我一窍不通。下面是实现步骤。

  1. 星图
    heavensabove这个网站有实时交互星图。但是具体到过去的某一日的星图我选择的是它的skychart,也就是“天文”目录下的“星图”。星图的几个选项就是年月日,左上角有可以更新地点的选项。
  2. python爬虫
    (1)视频准备用长度为100s的生日歌,为了不出现卡顿,所以至少得有1000张星图的照片。生成星图后复制图片地址到新标签页,右键可以保存,png格式,url里面出现ashx。去百度搜了一下ashx,是一般处理程序。html、ashx和web界面(aspx) [1] 这篇文章基本上解决了我的问题。
    (2)使用python的request库进行爬虫,会发现返回的text是乱码,后来乱研究了一通才发现返回的text里有一个"\PNG"的头,验证了一下数据是爬对了。
    (3)requests里面的url解释一下:size是大小;ecl和cb是黄道和星座分界是否打开,默认是打开的,这里调为0,个人审美;time指时间,是一个较大的数字,增加1就是增加了1天,需要哪天的星图就用网页更新,打开图片地址看看url获得时间上下限就可以了;lat、lng、alt分别是观测点的纬度、经度、高度,默认北纬东经为正,南纬西经为负。
import requests
r = requests.get('https://www.heavens-above.com/wholeskychart.ashx?lat=40&lng=115&alt=100&tz=ChST&size=800&SL=1&SN=1&BW=0&ecl=0&cb=0&time='+str(num))
  1. 处理获得的图片
    (1)用python内置的opencv库cv2处理图片,参考自文章Python 使用字节流读取图片并转换成图片格式显示[2]。网上查到opencv默认的读取是BGR,所以代码里有一句RGB2BGR。
    ( 2)在图片上加上时间,使用cv2的putText[3]函数,写入硬盘即可。参数查阅opencv document
    在这里插入图片描述

                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
python开发的真实星空显示软件 含真实恒星位置数据3144颗 代码讲解见: https://blog.csdn.net/xiaorang/article/details/106598307 数据格式例: {'long': 0.023278328898474372, 'lat': -0.09961466705757636, 'light': 46, 'const': 66}, {'long': 0.024870941840919196, 'lat': 0.2338062439126301, 'light': 55, 'const': 62}, {'long': 0.028107061526797, 'lat': 1.1204335039257496, 'light': 56, 'const': 18}, {'long': 0.03660100303760025, 'lat': 0.5077259659824991, 'light': 21, 'const': 1}, {'long': 0.04004802831028905, 'lat': 1.0323574005393255, 'light': 23, 'const': 18}, {'long': 0.03944444109507185, 'lat': 0.3178583859888262, 'light': 55, 'const': 62}, {'long': 0.040797071265367454, 'lat': -0.488478858963941, 'light': 54, 'const': 74}, {'long': 0.0410661312228549, 'lat': -0.798444499556106, 'light': 39, 'const': 64}, {'long': 0.043800486202076855, 'lat': 0.1945266317121166, 'light': 55, 'const': 66}, {'long': 0.045036755271142, 'lat': 0.804111967609767, 'light': 50, 'const': 1}, {'long': 0.043785947609407745, 'lat': -1.4350775693910554, 'light': 53, 'const': 58}, {'long': 0.04915283505929031, 'lat': -0.2699684886295715, 'light': 49, 'const': 21}, {'long': 0.050498187206605094, 'lat': -0.4851966800391031, 'light': 54, 'const': 74}, {'long': 0.05119631890740283, 'lat': -0.6131874860342564, 'light': 52, 'const': 74}, {'long': 0.05775584219505068, 'lat': 0.26500400429202875, 'light': 28, 'const': 62}, {'long': 0.05896303407877759, 'lat': 0.7162006931179011, 'light': 57, 'const': 1}, {'long': 0.06371905629046214, 'lat': 0.3526728525507925, 'light': 48, 'const': 62}, {'long': 0.06387905062299246, 'lat': -0.33043929519585447, 'light': 44, 'const': 21}, 代码解说详细的教程见: https://blog.csdn.net/xiaorang/article/details/106598307
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值