coinbus-data/coinbus/Macroeconomic_MoneyStockMea...

216 lines
12 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import pymysql
import time
import requests
from w3lib.html import remove_tags
from bs4 import BeautifulSoup
condition=True
while condition:
import datetime
# 获取时间
now_time = datetime.datetime.now()
next_time = now_time + datetime.timedelta(days=+1)
next_year = next_time.date().year
next_month = next_time.date().month
next_day = next_time.date().day
next_time = datetime.datetime.strptime(str(next_year) + "-" + str(next_month) + "-" + str(next_day) + " 17:00:01","%Y-%m-%d %H:%M:%S")
timer_start_time = (next_time - now_time).total_seconds()
page =requests.get("https://www.federalreserve.gov/releases/h6/current/default.htm")
page=page.text
soup = BeautifulSoup(page, 'html.parser')
page_tbody = soup.find_all('tbody')
# 获取三个表数据MoneyStockMeasuresSeasonallyAdjustedNotSeasonallyAdjusted
MoneyStockMeasures = page_tbody[0]
SeasonallyAdjusted = page_tbody[1]
NotSeasonallyAdjusted = page_tbody[2]
MoneyStockMeasures = remove_tags(str(MoneyStockMeasures))
SeasonallyAdjusted = remove_tags(str(SeasonallyAdjusted))
NotSeasonallyAdjusted = remove_tags(str(NotSeasonallyAdjusted))
# 修改时间字段
MoneyStockMeasures=MoneyStockMeasures.replace('Jan.', '1')
MoneyStockMeasures = MoneyStockMeasures.replace('Feb.', '2')
MoneyStockMeasures = MoneyStockMeasures.replace('Mar.', '3')
MoneyStockMeasures = MoneyStockMeasures.replace('Apr.', '4')
MoneyStockMeasures = MoneyStockMeasures.replace('May', '5')
MoneyStockMeasures = MoneyStockMeasures.replace('June', '6')
MoneyStockMeasures = MoneyStockMeasures.replace('July', '7')
MoneyStockMeasures = MoneyStockMeasures.replace('Aug.', '8')
MoneyStockMeasures = MoneyStockMeasures.replace('Sept.', '9')
MoneyStockMeasures = MoneyStockMeasures.replace('Oct.', '10')
MoneyStockMeasures = MoneyStockMeasures.replace('Nov.', '11')
MoneyStockMeasures = MoneyStockMeasures.replace('Dec.', '12')
MoneyStockMeasures = MoneyStockMeasures.replace('e', '')
MoneyStockMeasures = MoneyStockMeasures.split()
SeasonallyAdjusted = SeasonallyAdjusted.replace('Jan.', '1')
SeasonallyAdjusted = SeasonallyAdjusted.replace('Feb.', '2')
SeasonallyAdjusted = SeasonallyAdjusted.replace('Mar.', '3')
SeasonallyAdjusted = SeasonallyAdjusted.replace('Apr.', '4')
SeasonallyAdjusted = SeasonallyAdjusted.replace('May', '5')
SeasonallyAdjusted = SeasonallyAdjusted.replace('June', '6')
SeasonallyAdjusted = SeasonallyAdjusted.replace('July', '7')
SeasonallyAdjusted = SeasonallyAdjusted.replace('Aug.', '8')
SeasonallyAdjusted = SeasonallyAdjusted.replace('Sept.', '9')
SeasonallyAdjusted = SeasonallyAdjusted.replace('Oct.', '10')
SeasonallyAdjusted = SeasonallyAdjusted.replace('Nov.', '11')
SeasonallyAdjusted = SeasonallyAdjusted.replace('Dec.', '12')
SeasonallyAdjusted = SeasonallyAdjusted.replace('e', '')
SeasonallyAdjusted = SeasonallyAdjusted.split()
NotSeasonallyAdjusted = NotSeasonallyAdjusted.replace('Jan.', '1')
NotSeasonallyAdjusted = NotSeasonallyAdjusted.replace('Feb.', '2')
NotSeasonallyAdjusted = NotSeasonallyAdjusted.replace('Mar.', '3')
NotSeasonallyAdjusted = NotSeasonallyAdjusted.replace('Apr.', '4')
NotSeasonallyAdjusted = NotSeasonallyAdjusted.replace('May', '5')
NotSeasonallyAdjusted = NotSeasonallyAdjusted.replace('June', '6')
NotSeasonallyAdjusted = NotSeasonallyAdjusted.replace('July', '7')
NotSeasonallyAdjusted = NotSeasonallyAdjusted.replace('Aug.', '8')
NotSeasonallyAdjusted = NotSeasonallyAdjusted.replace('Sept.', '9')
NotSeasonallyAdjusted = NotSeasonallyAdjusted.replace('Oct.', '10')
NotSeasonallyAdjusted = NotSeasonallyAdjusted.replace('Nov.', '11')
NotSeasonallyAdjusted = NotSeasonallyAdjusted.replace('Dec.', '12')
NotSeasonallyAdjusted = NotSeasonallyAdjusted.replace('e', '')
NotSeasonallyAdjusted = NotSeasonallyAdjusted.split()
condition1=0
for i in range(17):
date1= MoneyStockMeasures[condition1 + 1] + '/' + MoneyStockMeasures[condition1 + 0] + '/1'
format = '%Y/%m/%d'
from datetime import datetime
# 获取数据时间和各项数据的值
date1 = datetime.strptime(date1, format)
value11=MoneyStockMeasures[condition1 + 2]
value11 = value11.replace(",", "")
value12=MoneyStockMeasures[condition1 + 3]
value12 = value12.replace(",", "")
value13=MoneyStockMeasures[condition1 + 7]
value13 = value13.replace(",", "")
value14=MoneyStockMeasures[condition1 + 8]
value14 = value14.replace(",", "")
value15=MoneyStockMeasures[condition1 + 4]
value15 = value15.replace(",", "")
value16=MoneyStockMeasures[condition1 + 5]
value16 = value16.replace(",", "")
value17=MoneyStockMeasures[condition1 + 6]
value17 = value17.replace(",", "")
value18=MoneyStockMeasures[condition1 + 9]
value18 = value18.replace(",", "")
value19=MoneyStockMeasures[condition1 + 10]
value19 = value19.replace(",", "")
value20=MoneyStockMeasures[condition1 + 11]
value20 = value20.replace(",", "")
condition1+=12
db = pymysql.connect(host="127.0.0.1",user="root",password="2GS@bPYcgiMyL14A",database="Macroeconomics",port=4423)
cursor = db.cursor()
sql = "select date from MoneyStockMeasures order by date desc limit 1"
cursor.execute(sql)
old_date = cursor.fetchall()
date2=old_date[0][0]
if i != 16:
sql="UPDATE MoneyStockMeasures SET adjustedM1=%s,adjustedM2=%s,notAdjustedM1=%s,notAdjustedM2=%s,currencyincirculation=%s,reserveBalances=%s,monetaryBase=%s,totalReserves=%s,totalMborrowings_M=%s,nonborrowedReserves=%s WHERE date= '%s'"%(value11, value12, value13, value14, value15, value16, value17, value18, value19, value20, date1)
cursor.execute(sql)
db.commit()
db.close()
else:
if date1 == date2:
sql = "UPDATE MoneyStockMeasures SET adjustedM1=%s,adjustedM2=%s,notAdjustedM1=%s,notAdjustedM2=%s,currencyincirculation=%s,reserveBalances=%s,monetaryBase=%s,totalReserves=%s,totalMborrowings_M=%s,nonborrowedReserves=%s WHERE date= '%s'" % (
value11, value12, value13, value14, value15, value16, value17, value18, value19, value20, date1)
cursor.execute(sql)
db.commit()
db.close()
else:
sql = "insert into MoneyStockMeasures(date,adjustedM1,adjustedM2,notAdjustedM1,notAdjustedM2,currencyincirculation,reserveBalances,monetaryBase,totalReserves,totalMborrowings_M,nonborrowedReserves)values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')" % (
date1, value11, value12, value13, value14, value15, value16, value17, value18, value19, value20)
cursor.execute(sql)
db.commit()
db.close()
condition2=0
for i in range(17):
date3= SeasonallyAdjusted[condition2 + 1] + '/' + SeasonallyAdjusted[condition2 + 0] + '/1'
format = '%Y/%m/%d'
from datetime import datetime
date3 = datetime.strptime(date3, format)
value21=SeasonallyAdjusted[condition2 + 2]
value21 = value21.replace(",", "")
value22=SeasonallyAdjusted[condition2 + 3]
value22 = value22.replace(",", "")
value23=SeasonallyAdjusted[condition2 + 4]
value23 = value23.replace(",", "")
value24=SeasonallyAdjusted[condition2 + 5]
value24 = value24.replace(",", "")
value25=SeasonallyAdjusted[condition2 + 6]
value25 = value25.replace(",", "")
condition2+=7
db = pymysql.connect(host="127.0.0.1",user="root",password="2GS@bPYcgiMyL14A",database="Macroeconomics",port=4423)
cursor = db.cursor()
sql = "select date from SeasonallyAdjusted order by date desc limit 1"
cursor.execute(sql)
old_date = cursor.fetchall()
date4=old_date[0][0]
if i != 16:
sql="UPDATE SeasonallyAdjusted SET currencyM1=%s,demandM1=%s,otherLiquid=%s,smallDenominationTimeNonM1M2=%s,retailMoneyMarketFundsNonM1M2=%s WHERE date= '%s'"%(value21, value22, value23, value24, value25, date3)
cursor.execute(sql)
db.commit()
db.close()
else:
if date3 == date4:
sql = "UPDATE SeasonallyAdjusted SET currencyM1=%s,demandM1=%s,otherLiquid=%s,smallDenominationTimeNonM1M2=%s,retailMoneyMarketFundsNonM1M2=%s WHERE date= '%s'" % (
value21, value22, value23, value24, value25, date3)
cursor.execute(sql)
db.commit()
db.close()
else:
sql = "insert into SeasonallyAdjusted(date,currencyM1,demandM1,otherLiquid,smallDenominationTimeNonM1M2,retailMoneyMarketFundsNonM1M2)values('%s','%s','%s','%s','%s','%s')" % (
date3, value21, value22, value23, value24, value25)
cursor.execute(sql)
db.commit()
db.close()
condition3=0
for i in range(17):
date5= NotSeasonallyAdjusted[condition3 + 1] + '/' + NotSeasonallyAdjusted[condition3 + 0] + '/1'
format = '%Y/%m/%d'
from datetime import datetime
date5 = datetime.strptime(date5, format)
value31=NotSeasonallyAdjusted[condition3 + 2]
value31 = value31.replace(",", "")
value32=NotSeasonallyAdjusted[condition3 + 3]
value32 = value32.replace(",", "")
value33=NotSeasonallyAdjusted[condition3 + 4]
value33 = value33.replace(",", "")
value34=NotSeasonallyAdjusted[condition3 + 5]
value34 = value34.replace(",", "")
value35=NotSeasonallyAdjusted[condition3 + 6]
value35 = value35.replace(",", "")
value36 = NotSeasonallyAdjusted[condition3 + 7]
value36 = value36.replace(",", "")
value37 = NotSeasonallyAdjusted[condition3 + 8]
value37 = value37.replace(",", "")
value38 = NotSeasonallyAdjusted[condition3 + 9]
value38 = value38.replace(",", "")
condition3+=10
db = pymysql.connect(host="127.0.0.1",user="root",password="2GS@bPYcgiMyL14A",database="Macroeconomics",port=4423)
cursor = db.cursor()
sql = "select date from NotSeasonallyAdjusted order by date desc limit 1"
cursor.execute(sql)
old_date = cursor.fetchall()
date6=old_date[0][0]
if i != 16:
sql="UPDATE NotSeasonallyAdjusted SET currencyM1=%s,demandM1=%s,otherLiquid=%s,smallDenominationTimeNonM1M2=%s,retailMoneyMarketFundsNonM1M2=%s,atDepositoryInstitutions=%s,atMoneyMarketFunds=%s,total=%s WHERE date= '%s'"%(value31, value32, value33, value34, value35, value36, value37, value38, date5)
cursor.execute(sql)
db.commit()
db.close()
else:
if date5 == date6:
sql = "UPDATE NotSeasonallyAdjusted SET currencyM1=%s,demandM1=%s,otherLiquid=%s,smallDenominationTimeNonM1M2=%s,retailMoneyMarketFundsNonM1M2=%s,atDepositoryInstitutions=%s,atMoneyMarketFunds=%s,total=%s WHERE date= '%s'" % (
value31, value32, value33, value34, value35, value36, value37, value38, date5)
cursor.execute(sql)
db.commit()
db.close()
else:
sql = "insert into NotSeasonallyAdjusted(date,currencyM1,demandM1,otherLiquid,smallDenominationTimeNonM1M2,retailMoneyMarketFundsNonM1M2,atDepositoryInstitutions,atMoneyMarketFunds,total)values('%s','%s','%s','%s','%s','%s','%s','%s','%s')" % (
date5, value31, value32, value33, value34, value35, value36, value37, value38)
cursor.execute(sql)
db.commit()
db.close()
time.sleep(timer_start_time)