源码地址:基于python+MySQL的疫情数据分析及可视化.zip-Python文档类资源-CSDN下载
项目环境:pycharm python3.9 数据库:MySQL8
第三方库:urllib、urllib3、requests、traceback、pymysql、json、jieba、wordcloud、requests、sys、time、flask库,做好前期准备。
项目设计文档目录:
部分数据截图:
编写代码(部分重要代码)
def get_tencent_data():
url1 = "https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5"
url2 = "https://view.inews.qq.com/g2/getOnsInfo?name=disease_other"
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36"
}
这里用url获取响应从腾讯新闻中获取数据,并获取的是text字节形式的内容。代码中url是获取数据的目标网页,这边是获取了腾讯的两个网页。
res1 = json.loads(r1.text)
res2 = json.loads(r2.text)
data_all1 = json.loads(res1["data"])
data_all2 = json.loads(res2["data"])
这里是将网页信息从转化为字典text,方便我们进行抓取数据。Json加载data中的数据到新的变量dataall。
def get_conn():
# 建立连接
conn = pymysql.connect(host="###", user="###", password="###", db="cov", charset="utf8")
# c创建游标
cursor = conn.cursor()
return conn, cursor
def close_conn(conn, cursor):
if cursor:
cursor.close()
if conn:
conn.close()
建立与数据库(cov)的连接,使得能从数据库中数据在运行图中显示
def update_hotsearch():
cursor = None
conn = None
try:
context = get_baidu_hot()
print(f"{time.asctime()}开始更新数据")
conn,cursor = get_conn()
sql = "insert into hotsearch(dt,content) values(%s,%s)"
ts = time.strftime("%Y-%m-%d %X")
for i in context:
cursor.execute(sql,(ts,i))
conn.commit()
print(f"{time.asctime()}数据更新完毕")
except:
traceback.print_exc()
finally:
close_conn(conn,cursor)
对网页中数据的变化在数据库中进行实时更新
def get_c2_data():
sql = "select province,sum(confirm) from details " \
"where update_time=(select update_time from details " \
"order by update_time desc limit 1) " \
"group by province"
res = query(sql)
return res
使用echarts绘制中国地图模块
模块设计:
项目运行截图: