本文已参与「新人创作礼」活动,一起开启掘金创作之路。
import re
from lxml import etree
from docx import Document
from docx.shared import Pt
from docx.shared import Inches
from docx.oxml.ns import qn
import os
import random
import requests
import pygal
import json
import pymysql
headers = {
'user-agent': '自己的ua'}
url = 'https://voice.baidu.com/api/newpneumonia?from=page&callback=jsonp_1663662885340_48451'
response = requests.get(url = url,headers=headers)
print(response.status_code)
nn = ""
u=0
try:
# resp = json.loads(response.text)
resp = (response.text)
for i in resp:
nn+=i
tt = nn[26:-2]
# print(tt)
re_json = json.loads(tt)
# print(re_json["data"]["outbreakReport"]["data"])
list_1 = re_json["data"]["outbreakReport"]["data"]
for i in list_1:
# 图表名
# 添加数据
# view.add('A', 31)
# view.add('B', 55)
# view.add('C', 14)
# 保存为view.svg(也可以保存为jpg)
# view.render_to_file('view.svg')
city = i['area']+i['city']
leiji_confirm = i['confirmed']
died = i['died']
cured = i['crued']
nowconfirm = i['curConfirm']
xingzeng = i['confirmedRelative']
leiji_confirm = str(leiji_confirm)
cured = str(cured)
died = str(died)
nowconfirm = str(nowconfirm)
xingzeng = str(xingzeng)
data = []
data.append(city)
data.append(leiji_confirm)
data.append(died)
data.append(cured)
data.append(nowconfirm)
data.append(xingzeng)
########数据库存取
conn = pymysql.connect(host='localhost', port=3306, user='user', password='password', db='db')#用的是自己的数据库数据嗷
cur = conn.cursor()
sql1 = "insert into 疫情(city,累计确诊,死亡数,治愈数,现有确诊数,新增本土数) values(%s,%s,%s,%s,%s,%s);"
cur.execute(sql1,(city,leiji_confirm,died,cured,nowconfirm,xingzeng))
# cur.execute("insert into web_class(name,id,age,class) values('张三','2005','16','5')")
# cur.execute("select * from 疫情")
# for users in cur.fetchall():
# print(users)
conn.commit()
# view = pygal.Bar()
# # view = pygal.HorizontalStackedBar()
# # 图表名
# view.title = '{}疫情情况柱状图'.format(city)
# # 添加数据
# view.add('累计确诊', [leiji_confirm])
# view.add('不幸离世数', [died])
# view.add('治愈数', [cured])
# view.add('现有确诊数',[nowconfirm])
# view.add('新增本土', [xingzeng])
#
# # 在浏览器中查看
# # view.render_in_browser()
# # 保存为view.svg(也可以保存为jpg)
# view.render_to_file('D:\定时器\柱图{}疫情.svg'.format(city))
#########################################
# view = pygal.Pie(inner_radius=0.4)
# view.title = '{}疫情情况饼状图'.format(city)
# view.add('累计确诊', leiji_confirm)
# view.add('不幸离世数', died)
# view.add('治愈数', cured)
# view.add('现有确诊数',nowconfirm)
# view.add('新增本土', xingzeng)
# view.render_to_file('D:\定时器\饼图{}疫情.svg'.format(city))
###############################################
# gauge = pygal.SolidGauge(inner_radius=0.70)
# percent_formatter = lambda x: '{:.10g}%'.format(x)
# # dollar_formatter = lambda x: '{}$'.format(x)
# gauge.value_formatter = percent_formatter
#
# # gauge.add('Series 1', [{'value': 225000, 'max_value': 1275000}],
# # formatter=dollar_formatter)
# gauge.add('累计确诊', [{'value': leiji_confirm, 'max_value': leiji_confirm+xingzeng}])
# gauge.add('死亡', [{'value': died, 'max_value': leiji_confirm+xingzeng}])
# # gauge.add(
# # '', [
# # {'value': 51, 'max_value': 100},
# # {'value': 12, 'max_value': 100}])
# gauge.add('治愈数', [{'value': cured, 'max_value': leiji_confirm+xingzeng}])
# gauge.add('现有确诊数', [{'value': nowconfirm, 'max_value': leiji_confirm+xingzeng}])
# gauge.add('新增本土', [{'value': xingzeng, 'max_value': leiji_confirm+xingzeng}])
# # gauge.add('Series 6', 99)
# # gauge.add('Series 7', [{'value': 100, 'max_value': 100}])
# gauge.render_to_file('D:\定时器\疫情情况{}疫情.svg'.format(city))
#####################################################################
print(city,leiji_confirm,died,cured,nowconfirm,xingzeng)
u+=1
if(u==len(list_1)):
cur.close()
conn.close()
# kop = re_json.items()
# print(kop)
# print(re_json)
except Exception as ex:
print(ex)
# response.encoding = 'utf-8'
#
#
# html = response.text
# data = json.loads(html)
# print(html)
# print(type(html))
#
# #将字符串转换成字典
# dict_json = json.loads(html)
# print(dict_json)
本文在上一节的基础上加入了数据库储存,我使用的是软件navicat,然后数据库用的是mysql,利用了爬虫技术,获取数据信息,将其记录到数据库当中
文中 sql1 = "insert into 疫情(city,累计确诊,死亡数,治愈数,现有确诊数,新增本土数) values(%s,%s,%s,%s,%s,%s);" cur.execute(sql1,(city,leiji_confirm,died,cured,nowconfirm,xingzeng))当然用with语句来表示更好,可以省略cur.close()
注意匹配问题,分号一定不能忘