from json import JSONDecoder import json from matplotlib.font_manager import json_load import pymysql import requests import time from bs4 import BeautifulSoup import itertools class LottryRecord: def __init__(self): self.loid = '' self.r1 = 0 self.r2 = 0 self.r3 = 0 self.r4 = 0 self.r5 = 0 self.r6 = 0 self.blue = 0 self.BlueSunday = '' self.SalesAmount = 0 self.FirstCount = 0 self.FisrtBonus = 0 self.SecCount = 0 self.SecBonus = 0 self.PoolAmount =0 self.lottime = '' config = { 'host':'localhost', 'port':3306, 'user':'root', 'password':'123456', 'database':'lottery', 'charset':'utf8mb4', 'cursorclass':pymysql.cursors.Cursor, } colorString = "\033[32m"+"dddddddddd :\033[31m"+"dfadfasdfasdfasdfa" + "\033[0m\n" print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) db = pymysql.connect(**config) cursor = db.cursor() while True: cursor.execute("SELECT loid FROM historydata order by loid desc limit 1;") results = cursor.fetchone() if results == None: loidst = '2003001' #the first period is 03001 else: loidst = results[0] loidst =int(loidst) + 1 loidst =str(loidst) print(loidst ) #loidst = '2022038' #loided = '2022038' url = 'http://www.cwl.gov.cn/cwl_admin/front/cwlkj/search/kjxx/findDrawNotice?name=ssq&issueCount=&issueStart='+loidst+'&issueEnd='+loidst+'&dayStart=&dayEnd=' print(url) res = requests.get(url) print(res.status_code) if res.status_code != 200 : print('status_code' + str(res.status_code)) break jr = json.loads(res.content) if jr['state'] != 0 : print('state' + str(jr['state'])) # go to the next year loid = loidst[0:4] loid =int(loid) + 1 loid =str(loid) + '001' loidst = loid url = 'http://www.cwl.gov.cn/cwl_admin/front/cwlkj/search/kjxx/findDrawNotice?name=ssq&issueCount=&issueStart='+loidst+'&issueEnd='+loidst+'&dayStart=&dayEnd=' print(url) res = requests.get(url) print(res.status_code) if res.status_code != 200 : print('status_code' + str(res.status_code)) break jr = json.loads(res.content) if jr['state'] != 0 : print('state' + str(jr['state'])) break qiu_red = jr['result'][0]['red'].split(',') qiu_blue = jr['result'][0]['blue'] record = LottryRecord() record.loid = loidst record.r1 = qiu_red[0] record.r2 = qiu_red[1] record.r3 = qiu_red[2] record.r4 = qiu_red[3] record.r5 = qiu_red[4] record.r6 = qiu_red[5] record.blue = qiu_blue record.BlueSunday = jr['result'][0]['blue2'] #don't record this record.lottime = jr['result'][0]['date'][0:10] record.SalesAmount = jr['result'][0]['sales'] record.PoolAmount = jr['result'][0]['poolmoney'] record.FirstCount = jr['result'][0]['prizegrades'][0]['typenum'] record.FisrtBonus = jr['result'][0]['prizegrades'][0]['typemoney'] record.SecCount = jr['result'][0]['prizegrades'][1]['typenum'] record.SecBonus = jr['result'][0]['prizegrades'][1]['typemoney'] print("\033[32m",record.lottime," ",record.loid,":\033[31m",record.r1,record.r2,record.r3,record.r4,record.r5,record.r6,"\033[0m+\033[34m", record.blue, "\033[0m") ; params =[record.loid ,record.r1 ,record.r2 ,record.r3 ,record.r4 ,record.r5 ,record.r6 ,record.blue ,record.BlueSunday , \ record.SalesAmount,record.FirstCount ,record.FisrtBonus ,record.SecCount,record.SecBonus,record.PoolAmount ,record.lottime] bought1 = ['02', '07','08','22'] bought2 = ['12','16','28','32','33'] reds = [record.r1,record.r2,record.r3,record.r4,record.r5,record.r6] intersection1 = list(set(bought1).intersection(set(reds))) intersection2 = list(set(bought2).intersection(set(reds))) money = 0 glist = itertools.combinations(bought2, 2) cnt = 0 for c in glist: redlist = list(c) redlist.extend(bought1) ss = list(set(redlist).intersection(set(reds))) if len(ss) < 3: if record.blue == "04": money += 5 cnt+=1 print(cnt, ": \033[32m", ss, " 5 元 \033[0m") if len(ss) == 3: if record.blue == "04": money += 10 cnt+=1 print(cnt, ": \033[32m", ss, " 10 元 \033[0m") elif len(ss) == 4: if record.blue == "04": money += 200 cnt+=1 print(cnt, ": \033[32m", ss, " 200 元 \033[0m") else: money += 10 cnt+=1 print(cnt, ": \033[32m", ss, " 10 元 \033[0m") elif len(ss) == 5: if record.blue == "04": money += 3000 cnt+=1 print(cnt, ": \033[32m", ss, " 3000 元 \033[0m") else: money += 200 cnt+=1 print(cnt, ": \033[32m", ss, " 200 元 \033[0m") elif len(ss) == 6: if record.blue == "04": money += record.FisrtBonus cnt+=1 print(cnt, ": \033[32m", ss, " ", record.FisrtBonus, " 元 \033[0m") else: money += record.SecBonus cnt+=1 print(cnt, ": \033[32m", ss, " ", record.SecBonus, " 元 \033[0m") print("\033[32m", intersection1,",", intersection2 ," : ", money, " 元 \033[0m") insertSql = 'INSERT INTO `historydata`(`Loid`,`R1`,`R2`,`R3`,`R4`,`R5`,`R6`,`Blue`,`BlueSunday`,`SalesAmount`,`FirstCount`,`FisrtBonus`,`SecCount`,`SecBonus`,`PoolAmount`,`lottime`)' \ 'VALUES ( %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)' cnt = cursor.execute(insertSql,params ) print(record.loid + ':' + str(cnt)) db.commit() print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
对应所用到的数据库建表语句:https://www.cnblogs.com/crazyghostvon/p/mysqlskills.html