From efaca4c00b6d003b83f30004dc212dea7e39c8a9 Mon Sep 17 00:00:00 2001 From: ZGX <2774606652@qq.com> Date: Mon, 17 Aug 2020 11:00:15 +0800 Subject: [PATCH] =?UTF-8?q?wb=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- We_test.html | 12 ++++ foreign_datas.py | 138 ---------------------------------------------- foreign_table.sql | 11 ---- get_datas.py | 92 ------------------------------- show_in_ wb.js | 57 ------------------- 5 files changed, 12 insertions(+), 298 deletions(-) create mode 100644 We_test.html delete mode 100644 foreign_datas.py delete mode 100644 foreign_table.sql delete mode 100644 get_datas.py delete mode 100644 show_in_ wb.js diff --git a/We_test.html b/We_test.html new file mode 100644 index 0000000..f36a72d --- /dev/null +++ b/We_test.html @@ -0,0 +1,12 @@ + + +
+ + + + + + + + + \ No newline at end of file diff --git a/foreign_datas.py b/foreign_datas.py deleted file mode 100644 index f82f5d8..0000000 --- a/foreign_datas.py +++ /dev/null @@ -1,138 +0,0 @@ -import pymysql -import requests -from bs4 import BeautifulSoup -import json - -class ForeignCountry: - def __init__(self): - self.died = 0 - self.confirmed = 0 - self.crued = 0 - self.area = '' - self.curConfirm = 0 - self.confirmedRelative = 0 - self.pub_date = '' - def __str__(self): - return 'area: %s, died: %s, confirmed: %s, crued: %s, curConfirm: %s, confirmedRelative: %s, pub_date: %s' % (self.area, self.died, self.confirmed, self.crued, self.curConfirm, self.confirmedRelative, self.pub_date) - - def get_fcountry_info_tuple(self): - return ((self.died, self.confirmed, self.crued, self.area, self.curConfirm, self.confirmedRelative, self.pub_date)) - -class MyDB: - def __init__(self, host, user, passwd, db): - self.conn = pymysql.connect(host, user, passwd, db) - self.cursor = self.conn.cursor() - - - # 获取国外国家类参数列表格式 - def get_fcountry_args_list(self, all_foreign_countries): - all_args_list = [] - for country in all_foreign_countries: - info = country.get_fcountry_info_tuple() - all_args_list.append(info) - return all_args_list - - # 保存国外每日疫情数据 - def save_outside_daily_datas(self, all_foreign_countries): - curdate=all_foreign_countries[0].pub_date - #先删除当天已有的数据 - sql='delete from foreign_daily_datas where pub_date like "%s"'%(curdate[:10]+ '%') - - try: - self.cursor.execute(sql) - self.conn.commit() - except Exception as e: - print(e) - - sql = 'insert into foreign_daily_datas(died, confirmed, crued, area, curConfirm, confirmedRelative, pub_date) values(%s, %s, %s, %s, %s, %s, %s)' - res = self.get_fcountry_args_list(all_foreign_countries) - print('+++ foreign_daily_datas, data len: %d' % len(res)) - try: - self.cursor.executemany(sql, res) - self.conn.commit() - except Exception as e: - print(e) - print('+++ foreign_daily_datas is over.') - - - def __del__(self): - if self.conn is not None: - self.conn.close() - - -class DataService: - #解析网页 - def __init__(self): - self.url = 'https://voice.baidu.com/act/newpneumonia/newpneumonia' - self.db = MyDB('localhost', 'root', '1999z5g24x','text_data_increasing') - - # 抓取网页 - def fetch_html_page(self): - res = requests.get(self.url) - res = res.content.decode('utf-8') - return res - - # 解析网页 - def parse_target_page(self, html): - soup = BeautifulSoup(html) - tag = soup.find('script', attrs={'id':'captain-config'}) - tagStr = tag.string - tagDict = json.loads(tagStr) - - # 提取数据更新时间\n", - self.pub_date = tagDict['component'][0]['mapLastUpdatedTime'] - # 获取国外各国家的数据\n", - self.outsideDatas = tagDict['component'][0]['caseOutsideList'] - # 处理字符串 - def process_str(self, s): - ret = '' - if s is None or s == '': - ret ='0' - else: - ret = s - return ret - - def getOrElse(self,target, key): - ret = '' - if target.get(key) != None: - ret = target[key] - else: - ret = '' - return ret - - - #解析国外数据 - def parse_outside_daily_datas(self): - # self.__outsideDailyDatas为list,一个国家对应一个元素 - all_foreign_countries = [] - for item in self.outsideDatas: - country = ForeignCountry() - country.died = self.getOrElse(item, 'died') - country.confirmed = self.getOrElse(item, 'confirmed') - country.crued = self.getOrElse(item, 'crued') - country.area = self.getOrElse(item, 'area') - country.curConfirm = self.getOrElse(item, 'curConfirm') - country.confirmedRelative = self.getOrElse(item, 'confirmedRelative') - country.pub_date = self.pub_date - all_foreign_countries.append(country) - return all_foreign_countries - - # 提取内容生成对象 - def fetch_page_datas(self): - all_countries = self.parse_outside_daily_datas() - - #for item in all_countries: - # print(item) - return all_countries - - # 业务函数 - def process_data(self): - html = self.fetch_html_page() - self.parse_target_page(html) - all_countries = self.fetch_page_datas() - # 保存数据 - self.db.save_outside_daily_datas(all_countries) - -# 创建Dataservice对象 -ds = DataService() -ds.process_data() diff --git a/foreign_table.sql b/foreign_table.sql deleted file mode 100644 index 2891152..0000000 --- a/foreign_table.sql +++ /dev/null @@ -1,11 +0,0 @@ -create table foreign_daily_datas - ( -Id INT primary key auto_increment not null comment '编号', -died INT comment '累计死亡', -confirmed INT comment '累计确诊', -crued INT comment '累计治愈', -area VARCHAR(4000) comment '国家', -curConfirm INT comment '现有确诊', -confirmedRelative INT comment '较昨日新增确诊', -pub_date VARCHAR(4000) comment '发布日期' - ) comment '国外各国家每日疫情数据'; \ No newline at end of file diff --git a/get_datas.py b/get_datas.py deleted file mode 100644 index 4b04aa4..0000000 --- a/get_datas.py +++ /dev/null @@ -1,92 +0,0 @@ -import pymysql -from datetime import datetime, timedelta -import time - - -class MyDB: - def __init__(self, host, user, passwd, db): - self.conn = pymysql.connect(host, user, passwd, db) - self.cursor = self.conn.cursor() - - def __del__(self): - self.conn.close() - - # 获取当然日期 - def get_cur_date(self): - date = datetime.today() - curdate = date.strftime('%Y.%m.%d') - return curdate - - # 获取前N天的日期 - def get_pren_date(self, n=1): - predate = datetime.today() + timedelta(-n) - predate = predate.strftime('%Y.%m.%d') - return predate - - # 获取现有确诊人数最多的5个国家 - def get_country_curconfirm_top5(self): - curdate = self.get_cur_date() # 获取当天的日期 - sql = "select area,curConfirm,pub_date from foreign_daily_datas where pub_date like '%s' order by curConfirm desc limit 5" % (curdate + '%') - #print('+++ sql: %s' % sql) - - results = [] - try: - self.cursor.execute(sql) - results = self.cursor.fetchall() - - n = 1 - - while len(results) <= 0: - predate = self.get_pren_date(n) - sql = "select area,curConfirm,pub_date from foreign_daily_datas where pub_date like '%s' order by curConfirm desc limit 5" % (predate + '%') - #print('+++ presql: %s' % sql) - - self.cursor.execute(sql) - results = self.cursor.fetchall() - n += 1 - - if n >= 30: - break - else: - time.sleep(1) - - except Exception as e: - print(e) - - return results - -#测试 -if __name__ == "__main__": - mydb = MyDB('localhost', 'root', '1999z5g24x', 'text_data_increasing') - results = mydb.get_country_curconfirm_top5() # results : [] - for i in results: - print(i) - - - - -from flask import Flask, render_template -from flask import jsonify - - -app = Flask(__name__) - - -@app.route('/hello') -def say_hello(): - return '