摘要:本文介绍了如何使用Python编写一个星座查询*,通过输入出生日期获取用户的星座信息。从数据爬取、数据清洗、数据存储和数据展示四个方面详细阐述了构建这个*的过程,并且介绍了如何使用Python的相关库来实现这个*。
1、数据爬取
为了实现星座查询,需要获取各星座的时间范围。这里介绍一种使用Python爬取星座时间范围数据的方法。需要确定数据来源。可以选择从天文学网站或星座相关的官方网站获取数据。以获取星座时间范围为例,这里使用“ximaomingxingzuozhijia*”这个网站作为数据来源。
使用Python的Requests库或者Scrapy框架,获取星座时间数据并解析HTML,将数据保存到本地文件或数据库中。这里使用Requests库进行数据爬取,BeautifulSoup库解析数据。
代码示例:
import requestsfrom bs4 import BeautifulSoup
*l = "http://*ximaomingxingzuozhijia*/"
resp = requests.get(*l)
soup = BeautifulSoup(resp.text, 'html.parser')
# 获取星座信息
star_* = soup.find_all('div', {'class': 'StarliJingc'})
2、数据清洗
爬取下来的网页数据通常包含大量的HTML标签、数据格式不规范等问题。在使用这些数据前,需要先对其进行清洗。数据清洗包括去除多余的HTML标签、缺失值填补等工作。
使用Python的re模块或者BeautifulSoup库对数据进行清洗。对于爬取的星座时间范围数据的清洗,可以使用正则表达式根据HTML标签和其他特定格式规则进行清洗。
代码示例:
import re# 清洗星座信息
for * in star_*:
# 获取星座日期范围
time_* = re.findall(r'\d{1,2}月\d{1,2}日-\d{1,2}月\d{1,2}日', str(*))
if time_*:
star_time.append(time_*[0])
3、数据存储
清洗后的数据需要进行存储,以便后续使用。数据存储包括文件存储或数据库存储。对于星座查询*,可以将获取的数据存储到MySQL或MongoDB等数据库中。
使用Python的pymysql或pymongo库访问数据库,进行数据存储。对于MySQL数据库,需要先创建表格,再将数据*到对应字段。
代码示例:
import pymysql# 连接数据库
conn = pymysql.connect(host='localhost', port=3306, user='root', password='password', db='stars', charset='utf8')
c*sor = conn.c*sor()
# 创建数据表
create_table = '''
CREATE TABLE star_* (
id INT(11) NOT NULL AUTO_INCREMENT,
star_name VARCHAR (255) NOT NULL,
star_time VARCHAR (255) NOT NULL,
PRIMARY KEY (id)
)
'''
c*sor.execute(create_table)
# *数据
insert_sql = "INSERT INTO star_* (star_name, star_time) VALUES (%s, %s)"
for key, value in stars.items():
c*sor.execute(insert_sql, (key, value))
conn*mit()
c*sor.close()
conn.close()
4、数据展示
获取和存储星座时间范围数据后,需要对其进行进一步处理,以提供给用户使用。用户输入出生日期,*自动计算出其对应的星座。
使用Python的datetime库获取当前日期和用户输入的生日日期,并根据星座时间范围数据进行匹配。可以使用列表或字典等数据结构来保存星座时间数据。
代码示例:
import datetime# 计算星座
def get_constellation(birthday):
month, day = birthday.month, birthday.day
for index in range(len(star_time)):
star_time_list = star_time[index].split('-')
start_time = datetime.datetime.strptime(star_time_list[0], '%m月%d日').replace(year=birthday.year)
end_time = datetime.datetime.strptime(star_time_list[1], '%m月%d日').replace(year=birthday.year)
if start_time <= birthday <= end_time:
ret*n constellation_name[index]
ret*n None
完整代码:
import datetimeimport requests
from bs4 import BeautifulSoup
import re
import pymysql
# 获取星座信息
def get_star_*():
*l = "http://*ximaomingxingzuozhijia*/"
resp = requests.get(*l)
soup = BeautifulSoup(resp.text, 'html.parser')
star_* = soup.find_all('div', {'class': 'StarliJingc'})
ret*n star_*
# 清洗星座信息
def clean_star_*(star_*):
star_time = []
constellation_name = ['水瓶座', '双鱼座', '白羊座', '金牛座', '双子座', '巨蟹座', '狮子座', '*座', '天秤座', '天蝎座', '射手座', '摩羯座']
for * in star_*:
# 获取星座日期范围
time_* = re.findall(r'\d{1,2}月\d{1,2}日-\d{1,2}月\d{1,2}日', str(*))
if time_*:
star_time.append(time_*[0])
stars = dict(zip(constellation_name, star_time))
ret*n stars
# 连接数据库,创建数据表,*数据
def store_star_*(stars):
conn = pymysql.connect(host='localhost', port=3306, user='root', password='password', db='stars', charset='utf8')
c*sor = conn.c*sor()
create_table = '''
CREATE TABLE star_* (
id INT(11) NOT NULL AUTO_INCREMENT,
star_name VARCHAR (255) NOT NULL,
star_time VARCHAR (255) NOT NULL,
PRIMARY KEY (id)
)
'''
c*sor.execute(create_table)
insert_sql = "INSERT INTO star_* (star_name, star_time) VALUES (%s, %s)"
for key, value in stars.items():
c*sor.execute(insert_sql, (key, value))
conn*mit()
c*sor.close()
conn.close()
# 计算星座
def get_constellation(birthday):
star_* = get_star_*()
stars = clean_star_*(star_*)
constellation_name = ['水瓶座', '双鱼座', '白羊座', '金牛座', '双子座', '巨蟹座', '狮子座', '*座', '天秤座', '天蝎座', '射手座', '摩羯座']
star_time = list(stars.values())
month, day = birthday.month, birthday.day
for index in range(len(star_time)):
star_time_list = star_time[index].split('-')
start_time = datetime.datetime.strptime(star_time_list[0], '%m月%d日').replace(year=birthday.year)
end_time = datetime.datetime.strptime(star_time_list[1], '%m月%d日').replace(year=birthday.year)
if start_time <= birthday <= end_time:
ret*n constellation_name[index]
ret*n None
if __name__ == '__main__':
# 将获取到的数据存储到数据库中
star_* = get_star_*()
stars = clean_star_*(star_*)
store_star_*(stars)
# 计算用户输入的生日所属的星座
birthday = datetime.datetime.strptime('1990-01-01', '%Y-%m-%d').date()
constellation = get_constellation(birthday)
print(constellation)
总结:通过本文介绍的方法,可以使用Python编写一个星座查询*。使用请求、BeautifulSoup和正则表达式等Python库从互联网上爬取和清洗星座时间范围数据,然后将获取到的数据存储在一个MySQL或MongoDB数据库中。将用户输入的生日日期作为输入,*可以计算出来该日期所属的星座,提供给用户进行查询。
本文来自义诚投稿,不代表SMI运势网立场,如若转载,请注明出处:http://smigw.com/11488.html