来让我用Python算算你今天的“星座运势”?

Crossin的编程教室

共 3841字,需浏览 8分钟

 ·

2021-08-20 18:02

1. 项目背景

大家好,欢迎来到 Crossin的编程教室 !
现如今很多人见面都喜欢问一问对方的“星座”,说起星座相关的话题来更是滔滔不绝。基于此,我觉得有必要了解一下星座方面的知识,万一有人聊起“星座”话题的时候,不至于哑口无言。

2. 十二星座简介

百度百科上说:在西方占星学看来,黄道12星座是宇宙方位的代名词,一个人出生时,各星体落入黄道上的位置,说明了一个人的先天性格及天赋。并且认为:不同星座有着不同的运势。
于是将黄道分成12份,称为黄道12星座。依次为白羊座、金牛座、双子座、巨蟹座、狮子座、处女座、天秤座、天蝎座、射手座、摩羯座、水瓶座、双鱼座。
而今天这个代码案例,我们就带大家算一算不同星座的“运势”。先来看演示:

3. 开发思路

一共分为了3个部分:
  1. 定义一个函数,输入你的出生日期,获取对应的星座;
  2. 定义一个字典,根据不同的星座,得到星座对应的英文,用于拼接 URL;
  3. 获取你的星座运势。

1)定义一个函数,输入你的出生日期,获取对应的星座
对于我自己来说,是不咋关注“十二星座”的,而更喜欢说“十二生肖”。因此,我相信也有人和我一样不知道自己究竟是什么星座。
def get_constellation(month, date):
    dates = (212021212222232424242322)
    constellations = ("摩羯座""水瓶座""双鱼座""白羊座"
                      "金牛座""双子座""巨蟹座""狮子座"
                      "处女座""天秤座""天蝎座""射手座""摩羯座")
    if date < dates[month-1]:
        return constellations[month-1]
    else:
        return constellations[month]

constellation = get_constellation(721
print(f'根据你的出生日期,判断你属于"{constellation}"')
结果如下:

原来12月12日属于“射手座”。你是什么星座呢?
2)定义一个字典,根据不同的星座,得到星座对应的英文,用于拼接 URL
请求网页的时候,不同的星座有着自己不同的url,而唯一不同就是每个url中有着各自星座的英语名。下面这些代码,就是根据星座的中文名,来获取星座的英文名。
dict_ = {"水瓶座":"Aquarius",
         "双鱼座":"Pisces",
         "白羊座":"Aries",
         "金牛座":"Taurus",
         "双子座":"Gemini",
         "巨蟹座":"Cancer",
         "狮子座":"Leo",
         "处女座":"Virgo",
         "天秤座":"Libra",
         "天蝎座":"Scorpio",
         "射手座":"Sagittarius",
         "摩羯座":"Capricorn"}

url = f"https://www.xzw.com/fortune/{dict_[constellation]}/"
url
结果如下:

这里如果直接用英文形式的星座名更简单,但可能有同学无法一眼看出对应的是什么星座,所以我们多做了这样一层转换,增加可读性。

3)获取你的星座运势
这里用的网站没有特别的限制,所以采用最简单的爬虫就可以完成这个需求,不涉及什么高深的技术。这里为大家展示部分代码:
采集部分可以使用 requests 模块:
import requests
response = requests.get(url, verify=False)
response.encoding = 'utf-8'
content = response.text
文本内容提取部分:
lis = re.findall('<em style=" width:(.*?)px;">',content)
comprehensive_fortune,love_fortune,career_fortune,wealth_fortune = [str(int(int(i)/16))+"星" for i in lis]

health_index = re.findall('健康指数:</label>(.*?)<',content,re.S)[0]

negotiation_Index = re.findall('商谈指数:</label>(.*?)<',content,re.S)[0]

lucky_color = re.findall('幸运颜色:</label>(.*?)<',content,re.S)[0]

lucky_num = re.findall('幸运数字:</label>(.*?)<',content,re.S)[0]

match_constellation = re.findall('速配星座:</label>(.*?)<',content,re.S)[0]

short_comment = re.findall('短评:</label>(.*?)<',content,re.S)[0]
结果如下:
是不是挺有意思的?
不过星座运势并无科学依据,大家看看即可,不要太当真哦!
本文完整代码:

https://pan.baidu.com/s/1d1PtnRoGl1kNgU9Th8Z9Iw

提取码: rcv5

如果文章对你有帮助,欢迎转发/点赞/收藏~

作者:黄伟呢

来源:数据分析与统计学之美


_往期文章推荐_

用python写一个简单的贪吃蛇游戏




如需了解付费精品课程教学答疑服务
请在Crossin的编程教室内回复: 666

浏览 81
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报