学巴金发拉比菲特炒股(关于巴菲特炒股的技巧)
【51CTO原创稿件】沃伦·巴菲特( Warren Buffett),全球闻名的出资商。从事股票、电子现货、基金职业。在 2017 年 7 月 17 日,《福布斯富豪榜》发布,沃伦·巴菲特以净财物 734 亿美元排名第四。作为”股神”,他的出资理念被许多人追捧。与其共进午餐的慈悲活动都能够拍卖到 345.67 万美元,从中咱们能够轻易地看出,他的出资界位置、影响力有多大。他的出资名言有许多:危险,是来自你不知道你在做什么。若你不计划持有某只股票达十年,则十分钟也不要持有。出资的诀窍,不是评价某一职业对社会的影响有多大,或它的发展前景有多好,而是一间公司有多强的比赛优势。这优势能够保持多久,产品和服务的优越性耐久而深沉,才干给出资者带来优厚的报答。我最喜欢的持股时刻是……永久!要出资成功,就要拼命阅览。不光读有爱好购入的公司材料,也要阅览其他比赛者的材料。从他的这些名言中,咱们不难发现,巴菲特做的是长期出资,他投一家公司,抱定的方针是持续持有,不由于价格原因而出售。他看准一家公司,会剖析这家公司的比赛优势,也会剖析这家公司的对手的比赛优势,然后做出出资决策。他是怎样确认一家公司是否值得自己长期出资,是否具有比赛优势的呢?其间,最有用、最常用的手法之一便是剖析上市公司财政报表。网上有许多《跟巴菲特学看上市公司财政报表》诸如此类的文章,仁者见仁智者见智。本文要点不在于怎样剖析财政报表,而是怎样取得财政报表,为后续的便利剖析做准备。实战布景Github代码获取:github/Jack-Cherish/Python-spiderPython版别: Python3.x运转渠道: WindowsIDE: Sublime text3每个上市公司的财政报表都是免费供给的,能够在他们的官网进行下载。可是这样一个一个找,太费事。有没有一个网站,集成好各个上市公司的财政信息呢?当然有,并且许多!各个金融门户网站都有!今日,咱们看哪个金融门户网站?网易财经!双手奉上它的地址:quotes.money.163/hkstock/这个网站长这样:咱们能够经过股票查询,检查股票状况。比方我输入 00700,检查腾讯控股在美股的状况,如下图:能够看到,我截图的时刻,腾讯控股”绿了”,也便是跌了。点击财政数据,咱们就能够看到腾讯控股的财政报表,如图所示:这个财政数据栏目中,供给了《首要财政指标》、《赢利表》、《财物负债表》以及《现金流量表》。从图中能够看到,该网站供给了财政数据在线阅读功用,可是没有供给财政报表下载功用,怎样将每年的财政数据获取,并存入数据库,便利咱们后续的剖析呢?没错,这便是本文的主题:财政报表爬取入库。网站剖析咱们以腾讯控股的财政数据为例进行剖析。它的URL:quotes.money.163/hkstock/cwsj_00700.html看一下这个 URL 地址有什么特色?腾讯控股的股票代码是 00700。对的,你没猜错,’quotes.money.163/hkstock/cwsj_’ + 股票代码 + ‘.html’,便是各个上市公司的财政数据页面。考虑一个问题,下图的这些数据,咱们需求爬取吗?答曰:不需求!为什么?由于财政报表的格局是一致的。咱们需求的是这些报表里的数据,而不是表的栏目称号,这些栏目称号,咱们直接手动敲入到数据库中就能够了,直接作为数据库的列名。那么,这些报表数据怎样获取呢?请看下图:在时刻挑选框这儿,咱们能够获取到一共有哪些时刻的财政报表。点击查询按钮,咱们就能够进行查询,对点击首要财政指标的查询按钮这个动作,运用 Fiddler 进行抓包剖析。抓包截图如下:咱们能够看到,这个点击查询按钮,发送的恳求地址和回来数据。从上图能够看出回来的数据是以 JSON 格局存储的。那么咱们只需解分出这个 JSON 数据,就能够取得《首要财政指标》了。同理,经过抓包可知,首要财政指标、赢利表、财物负债表、现金流量表恳求的 URL 别离如下:quotes.money.163/hk/service/cwsj_service.php?symbol=00700&start=2006-06-30&end=2016-12-31&type=cwzbquotes.money.163/hk/service/cwsj_service.php?symbol=00700&start=2006-06-30&end=2016-12-31&type=lrbquotes.money.163/hk/hk/service/cwsj_service.php?symbol=00700&start=2006-12-31&end=2016-12-31&type=fzbquotes.money.163/hk/service/cwsj_service.php?symbol=00700&start=2006-06-30&end=2016-12-31&type=llb发现规则了吗?symbol=股票代码start=最早的财政报表时刻end=最近的财政报表时刻type=报表缩写(cwz代表首要财政指标,lrb代表赢利表,fzb代表负债表,llb代表现金流量表)现已知道了各个恳求的地址,那么接下来便是解析 JSON 数据了。能够看到,数据存储是用的英文,咱们得与下图的中文进行对应,创立一个字典进行存储。别问我,我是怎样对应出来的。我只想说,我花费了半个多小时,对数据,对得我头晕眼花。终究生成的对照表如下:编写代码在持续看文本之前,期望你现已把握以下常识:SQL 根底语法。MySQL 数据库的装置与运用。Python 操作 MySQL 数据库的办法。SQLyog 的装置与运用。SQLyog 是一个快速而简练的图形化办理 MySQL 数据库的东西,它能够在任何地址有用地办理你的数据库。Python3 爬虫根底。01.在 SQLyog 中创立表咱们创立一个姓名为 financialdata 的数据库,并依据网站状况创立四个表,别离为:cwzb(首要财政指标 )。fzb(财物负债表 )。llb(现金流量表 )。lrb(赢利表)。除了财政报表中的数据,咱们还需求额定添加股票名、股票代码、报表日期,用以区别不同股票,不同时刻的财政报表状况。各个数据的数据类型,我是大略分配的,能够依据实际状况和自己的需求进行设置。当然,假如为了省劲,能够像我相同:除了报表时刻设置为 date 类型外,其他都设置为 char(30)类型即可。好了,准备工作都好了,咱们开端编写代码吧,需求留意的一点是:在创立数据库衔接的时分,咱们需求指定 charset 参数,将其设置为 ’utf8’,由于数据库中存在中文,假如不设置,数据无法导入,当然,记住更改你的数据库名和暗码。02.编写代码编写代码如下:#-*- coding:UTF-8 -*- import pyMySQL import requests import json import re from bs4 import BeautifulSoup if __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 = \'quotes.money.163/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 = repile(\'.+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 = \'quotes.money.163/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句子 connmit() 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句子 connmit() except: # 产生过错时回滚 conn.rollback() value_dict = {} # 封闭数据库衔接 cursor.close() conn.close()看下运转作用,咱们现已顺畅地将腾讯控股的财政报表带入数据库中了。上述代码比较粗糙,持续完善代码。对代码进行重构,创立一个获取数据报表的类。依据用户输入股票代码,下载相应股票的财政报表,并显现下载进展,完成作用如下所示:一向在看,何不自己写个代码试试?完成作用如上图所示!只要自己着手,才干体会到编程的高兴,对常识把握也就愈加厚实。假如你觉得代码编写的差不多了,想对照代码看一看或许感觉自己无需着手,这种东西就能够轻松把握。那么能够从我的 Github 获取上图完成作用的代码:github/Jack-Cherish/python-spider/blob/master/financical.py总结本文没有完成批量上市公司财政报表的获取与入库,由于办法有许多。首要,咱们能够依据用户供给的股票代码进行批量下载。比方用户输入:00700,00701,00702。然后程序依据输入的股票代码,进行相应的解析,创立出对应的URL链接,即可完成批量下载。别的,也能够经过程序主动获取链接,比方网易财经供给了各个股票板块的涨幅排行榜、跌幅排行榜、成交额排行榜等,咱们经过获取这些股票的链接,也能够进行财政报表批量下载,办法很简单,因而不再负担。其他:在运用 MySQL 创立数据库衔接的时分,假如数据库(utf8 编码)中有中文,一定要记住设置 charset 参数为 utf8(对应数据库编码)。学习 SQL 很有协助,数据库查询很便利,便利咱们进行数据剖析。一切爬虫实战的代码,均能够在我的 Github 进行下载(Star 数量要破 100 了,给个助攻好不好?):github/Jack-Cherish/python-spider。如有问题,请留言。如有过错,还望纠正,谢谢!崔家华闻名博客博主现就读于东北大学模式识别与智能体系专业。本科期间,曾担任学生会”科技立异中心主任”一职,担任安排各类科技比赛相关活动。与此同时,酷爱科技比赛,曾于 2015 年取得第十届全国大学生“飞思卡尔”杯智能车比赛全国一等奖。研究生期间,致力于机器学习,在闻名博客已取得了不错的重视度。【51CTO原创稿件,协作站点转载请注明原文作者和出处为51CTO】
推荐阅读
-
景顺长城优选基金净值查询(怎样申请小额贷款)
在大城市凡是有过租房或许二手房生意阅历的朋友,关于房产中介应该有过较为充沛或五味杂陈、或咬牙切齿的感知。之所以着重大城市,不是说中...
-
[acadia]私募基金有哪些培训(私募基金培训视频)
晚间私募风闻:天壕环境:公司燃气板块事务继续坚持快速增长势头迈克生物:公司活跃布局血球、免疫等自主产品在海外商场推广维康药业:活跃...
-
悲痛!前知名调查记者杨海鹏因突发意外去世展商银行 享年55岁
据有关人士泄漏,原《南方周末》查询记者杨海鹏因突发意外逝世。多位与杨海鹏熟悉的媒体人表明,杨海鹏性情刚烈。据了解,杨海鹏猝然逝...
-
[a股开市时间]国投瑞银指数基金哪个好(国投瑞银中证资源指数基金怎么样)
优质问答1:谁了解国投瑞银中证指数基金,这只基金大约怎样样,值不值得申购?现在的大盘合适介入?这只基金是指数型基金,假设你看好大盘...
-
a002441众业达r现实增强技术
股票出资是一种需求耐性和意志的出资方法,出资者需求有久远的出资眼光和正确的出资战略,才能在商场中取得长时间的安稳报答。接下来,将带...
-
你我金融利率是多少((61193)恒指法兴零十熊J)
医疗ETF(512170)11月1日最新中心数据:最新基金规划:最新基金比例达156.27亿份,最新基金规划达110.15亿元!最...
-
[金牛趋势]环球外汇集团
我想把现有的基金卖掉,该怎样操做?你怎样买进的就怎样卖出,在银行或其他方法申购的基金可以到银行换回,也可以注册网上银行自己操作换回...
-
S江苏阳光股份catter钱包手机版p下载
Scatter钱包手机版渠道中支撑用户在线自在买卖自己的钱银财物,在Scatter钱包手机版app中安全的钱银买卖环境能够保证你的...
-
农江苏海陆重工业种植相关基金(农业种植基金排名)
这几天的商场确实有些触目惊心……先是新能源、军工、芯片、医疗器械、CXO等抢手赛道一片绿莹莹,后有“茅皇”和“宁王”总算不坐跷跷板...
-
怎么向郑州红十字基金会捐款(中国红十字基金会捐款查询证书号三圣股份)
【共渡难关!郑州红十字会接纳社会捐献方法发布】7月21日清晨,郑州市红十字会发布了接纳社会捐献方法,召唤爱心企业、爱心人士积极为郑...