首页 » SEO优化 » spl入库语句php技巧_Python3爬虫教程跟股神巴菲特进修炒股之财务报表入库MySQL

spl入库语句php技巧_Python3爬虫教程跟股神巴菲特进修炒股之财务报表入库MySQL

访客 2024-12-11 0

扫一扫用手机浏览

文章目录 [+]

Python版本: Python3.x

运行平台: Windows

spl入库语句php技巧_Python3爬虫教程跟股神巴菲特进修炒股之财务报表入库MySQL

IDE: Sublime text3

spl入库语句php技巧_Python3爬虫教程跟股神巴菲特进修炒股之财务报表入库MySQL
(图片来自网络侵删)

想要学习Python。
关注

本日,我们看哪个金融门户网站?网易财经!

这个网站长这样:

我们可以通过股票查询,查看股票情形。
比如我输入00700,查看腾讯控股在美股的情形。

可以看到,我截图的韶光,腾讯控股”绿了”,也便是跌了。
点击财务数据,我们就可以看到腾讯控股的财务报表。

这个财务数据栏目中,供应了《紧张财务指标》、《利润表》、《资产负债表》以及《现金流量表》。
可以看到,该网站供应了财务数据在线浏览功能,但是没有供应财务报表下载功能,如何将每年的财务数据获取,并存入数据库,方便我们后续的剖析呢?没错,这便是本文的主题:财务报表爬取入库。

网站剖析

创造规律了吗?

symbol=股票代码

start=最早的财务报表韶光

end=最近的财务报表韶光

type=报表缩写(cwz代表紧张财务指标,lrb代表利润表,fzb代表负债表,llb代表现金流量表)

可以看到,数据存储是用的英文,我们得与下图的中文进行对应,创建一个字典进行存储。

别问我,我是怎么对应出来的。
我只想说,我花费了半个多小时,对数据,对得我头晕眼花。

最终生成的对照表如下:

编写代码

连续看文本之前,希望你已经节制以下知识:

SQL根本语法MySQL数据库的安装与利用Python操作mysql数据库的方法SQLyog的安装与利用Python3爬虫根本requests库的利用Beautifulsoup库的利用

编写代码如下:

#-- coding:UTF-8 --import pymysqlimport requestsimport jsonimport refrom bs4 import BeautifulSoupif __name__ == '__main__': #打开数据库连接:host-连接主机地址,port-端口号,user-用户名,passwd-用户密码,db-数据库名,charset-编码 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='yourpasswd',db='financialdata',charset='utf8') #利用cursor()方法获取操作游标 cursor = conn.cursor() #紧张财务指标 cwzb_dict = {'EPS':'基本每股收益','EPS_DILUTED':'摊薄每股收益','GROSS_MARGIN':'毛利率', 'CAPITAL_ADEQUACY':'成本充足率','LOANS_DEPOSITS':'贷款回报率','ROTA':'总资产收益率', 'ROEQUITY':'净资产收益率','CURRENT_RATIO':'流动比率','QUICK_RATIO':'速动比率', 'ROLOANS':'存贷比','INVENTORY_TURNOVER':'存货周转率','GENERAL_ADMIN_RATIO':'管理用度比率', 'TOTAL_ASSET2TURNOVER':'资产周转率','FINCOSTS_GROSSPROFIT':'财务用度比率','TURNOVER_CASH':'发卖现金比率','YEAREND_DATE':'报表日期'} #利润表 lrb_dict = {'TURNOVER':'总营收','OPER_PROFIT':'经营利润','PBT':'除税前利润', 'NET_PROF':'净利润','EPS':'每股基本盈利','DPS':'每股派息', 'INCOME_INTEREST':'利息收益','INCOME_NETTRADING':'交易收益','INCOME_NETFEE':'用度收益','YEAREND_DATE':'报表日期'} #资产负债表 fzb_dict = { 'FIX_ASS':'固定资产','CURR_ASS':'流动资产','CURR_LIAB':'流动负债', 'INVENTORY':'存款','CASH':'现金及银行存结','OTHER_ASS':'其他资产', 'TOTAL_ASS':'总资产','TOTAL_LIAB':'总负债','EQUITY':'股东权柄', 'CASH_SHORTTERMFUND':'库存现金及短期资金','DEPOSITS_FROM_CUSTOMER':'客户存款', 'FINANCIALASSET_SALE':'可供***之证券','LOAN_TO_BANK':'银行同行存款及贷款', 'DERIVATIVES_LIABILITIES':'金融负债','DERIVATIVES_ASSET':'金融资产','YEAREND_DATE':'报表日期'} #现金流表 llb_dict = { 'CF_NCF_OPERACT':'经营活动产生的现金流','CF_INT_REC':'已收利息','CF_INT_PAID':'已付利息', 'CF_INT_REC':'已收股息','CF_DIV_PAID':'已派股息','CF_INV':'投资活动产生现金流', 'CF_FIN_ACT':'融资活动产生现金流','CF_BEG':'期初现金及现金等价物','CF_CHANGE_CSH':'现金及现金等价物净增加额', 'CF_END':'期末现金及现金等价物','CF_EXCH':'汇率变动影响','YEAREND_DATE':'报表日期'} #总表 table_dict = {'cwzb':cwzb_dict,'lrb':lrb_dict,'fzb':fzb_dict,'llb':llb_dict} #要求头 headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.8', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.109 Safari/537.36',} #上市股票地址 target_url = 'http://quotes.money.163.com/hkstock/cwsj_00700.html' req = requests.get(url = target_url, headers = headers) req.encoding = 'utf-8' html = req.text page_bf = BeautifulSoup(html, 'lxml') #股票名称,股票代码 name = page_bf.find_all('span', class_ = 'name')[0].string code = page_bf.find_all('span', class_ = 'code')[0].string code = re.findall('\d+',code)[0] #打印股票信息 print(name + ':' + code) print('') #存储各个表名的列表 table_name_list = [] table_date_list = [] each_date_list = [] url_list = [] #表名和表韶光 table_name = page_bf.find_all('div', class_ = 'titlebar3') for each_table_name in table_name: #表名 table_name_list.append(each_table_name.span.string) #表韶光 for each_table_date in each_table_name.div.find_all('select', id = re.compile('.+1$')): url_list.append(re.findall('(\w+)1',each_table_date.get('id'))[0]) for each_date in each_table_date.find_all('option'): each_date_list.append(each_date.string) table_date_list.append(each_date_list) each_date_list = [] #插入信息 for i in range(len(table_name_list)): print('表名:',table_name_list[i]) print('') #获取数据地址 url = 'http://quotes.money.163.com/hk/service/cwsj_service.php?symbol={}&start={}&end={}&type={}&unit=yuan'.format(code,table_date_list[i][-1],table_date_list[i][0],url_list[i]) req_table = requests.get(url = url, headers = headers) value_dict = {} for each_data in req_table.json(): value_dict['股票名'] = name value_dict['股票代码'] = code for key, value in each_data.items(): if key in table_dict[url_list[i]]: value_dict[table_dict[url_list[i]][key]] = value # print(value_dict) sql1 = \"大众\"大众\"大众 INSERT INTO %s (`股票名`,`股票代码`,`报表日期`) VALUES ('%s','%s','%s')\公众\"大众\公众 % (url_list[i],value_dict['股票名'],value_dict['股票代码'],value_dict['报表日期']) print(sql1) try: cursor.execute(sql1) # 实行sql语句 conn.commit() except: # 发生缺点时回滚 conn.rollback() for key, value in value_dict.items(): if key not in ['股票名','股票代码','报表日期']: sql2 = \公众\"大众\"大众 UPDATE %s SET %s='%s' WHERE `股票名`='%s' AND `报表日期`='%s'\"大众\"大众\公众 % (url_list[i],key,value,value_dict['股票名'],value_dict['报表日期']) print(sql2) try: cursor.execute(sql2) # 实行sql语句 conn.commit() except: # 发生缺点时回滚 conn.rollback() value_dict = {} # 关闭数据库连接 cursor.close() conn.close()

看下运行效果:我们已经顺利地将腾讯控股的财务报表带入数据库中了:

标签:

相关文章

php50403技巧_详解Mysql通讯协议

要理解Mysql的通讯协议,首先须要知道因此哪种连接办法去连接Mysql做事器的;Mysql的紧张连接办法包括:Unix套接字,内...

SEO优化 2024-12-13 阅读0 评论0