先回答上节课同学的问题:如果是苹果电脑,安装运行是不是会不一样?
谢谢,翰林同学的提醒,苹果电脑的安装包与windows是不一样的。我已经在云盘里分类补充进去了。可以直接下载安装。
鼓励大家探索一下从官网去找到相应的资源和函数库,尝试阅读官网的文字说明,安装方法、适用范围、命令参数的用途。扩展这个课程的内容。
更重要的是培养你自己查找官网资料的能力,顺便培养英语阅读的能力,记录整理资料的能力,Python的资料库几乎也都被汉化了,大不了还有google翻译,不会形成阅读障碍。
这里建议大家多用思维导图记录资料和分类,大家有需要我也可以另起一个主题讲讲思维导图的运用。
另一个问题是,Python里的命令操作,无论是Mindows还是苹果电脑MacOs都是一样吗?是的,都是一样的。包括后面讲的Google Chrome浏览器的开发者工具。
下面是上节课的答案:
语句在Python运行环境下,如果运行正常都是没有任何反馈提示的。隐含着的意思是Python说“主人,你的命令我已经完成您交办的任务了”。
>>> from bs4 import BeautifulSoup ###从bs4导入BeautifulSoup函数库,这里是大小写敏感的,敏感的意思是,要大小写完全一致。
>>> import requests ###导入requests
>>> import pymysql ###导入qymysql,这里必须全部小写,python才能正确找到并导入这里
大家注意到我用了“###”井字号,这样的格式备注说明了代码的作用,在Python里就是注释备注的作用,加上去Python不会报错它也不会理会。作用是提醒编程的人或别的程序员,这句语句代码到底起什么作用。
你也可以对一段代码注释说明。
优秀的代码都会使用必要完整信息的注释。坚持注释可以帮助自己看懂自己的代码。相信我,过几个月你回看自己的代码时,就会感谢自己曾经留下的那些线索,也因此节约大量重新思考的时间。
# 连接数据库
>>>connect = pymysql.Connect( ###下面括号里的参数是连接MySQL
### 必须的参数。具体值可以在MySql
###的WorkBench里找到。
host='localhost',
port=3306,
user='Taylor007er', ###事先建了一个用户叫Taylor007er的,
### 后面将用到这个用户完成目标
passwd='007123',
db='world', ###打开了MySQL自带的world数据库
charset='utf8')
###查询所有数据
# 获取游标
>>> cursor = connect.cursor()
>>> sql = "select * from city" ###读取city这样一张表。
>>> cursor.execute(sql)
>>> for row in cursor.fetchall(): ### for 循环,配合下面循环体里的打印语句,打印cursor.fetchall()数组 每一行 元组,元组的值赋值给row
print (row) ###将结果输出到屏幕上
下面是输出内容。
(1, 'Kabul', 'AFG', 'Kabol', 1780000)
(2, 'Qandahar', 'AFG', 'Qandahar', 237500)
(3, 'Herat', 'AFG', 'Herat', 186800)
(4, 'Mazar-e-Sharif', 'AFG', 'Balkh', 127800)
(5, 'Amsterdam', 'NLD', 'Noord-Holland', 731200)
(6, 'Rotterdam', 'NLD', 'Zuid-Holland', 593321)
......
......
(4078, 'Nablus', 'PSE', 'Nablus', 100231)
(4079, 'Rafah', 'PSE', 'Rafah', 92020)
###你将看到迅速跑出上面4079条世界主要城市资料,
# 关闭连接
cursor.close()
connect.close() ###关闭用完的数据库就如同你离开家,一定要锁好房门是相同的道理。机器会自动释放占用的内存空间。
===================可爱的分割线.结束复习===================
第二课、开心的爬虫之旅
复习完第一课的内容,我们进入今天的课程。
第一部分、规划工作范围
1、工作框架,从上市公司财务报表网页提取数据存放在MySQL数据库里,按照MJ数字力比率算出结果,增加每股现金流量值,从绝对值和比率值高低排序。筛选出优秀公司。后期可以自行增加排序样本。
2、数据来源分析:
上市公司的财务报表三张(利润表、资产负债表、现金流量表)每季度、年度都会有一套,已及一张MJ数字力分析表格式。
三表数据来源分别是:
利润表:http://stockdata.stock.hexun.com/2008/lr.aspx?stockid=002460&accountdate=2016.12.31
资产负债表:http://stockdata.stock.hexun.com/2008/zcfz.aspx?stockid=002460&accountdate=2016.12.31
现金流量表:http://stockdata.stock.hexun.com/2008/xjll.aspx?stockid=002460&accountdate=2016.12.31
和讯还帮助提供了一套财务比率的数据,可以帮助我们验证自己获取的数据,计算的比值是否正确。形成有效的参照系。
a、观察利润表:http://stockdata.stock.hexun.com/2008/lr.aspx?stockid=002460&accountdate=2016.12.31的链接组成规律,股票代码和会计日期是动态的,其他不变。抽象出这样的样子http://stockdata.stock.hexun.com/2008/lr.aspx?stockid=XXXXXX&accountdate=XXXX.XX.XX
b、观察资产负债表:http://stockdata.stock.hexun.com/2008/zcfz.aspx?stockid=002460&accountdate=2016.12.31的链接组成规律,股票代码和会计日期是动态的,其他不变。抽象出这样资产负债表链接:http://stockdata.stock.hexun.com/2008/zcfz.aspx?stockid=XXXXXX&accountdate=XXXX.XX.XX
c、观察现金流量表:http://stockdata.stock.hexun.com/2008/xjll.aspx?stockid=002460&accountdate=2016.12.31的链接组成规律,股票代码和会计日期是动态的,其他也不变。抽象出这样的现金流量表链接:http://stockdata.stock.hexun.com/2008/xjll.aspx?stockid=XXXXXX&accountdate=XXXX.XX.XX
d、MJ数字力分析表:http://caibaoshuo.cn/companies/000008 这个更简洁,换掉后面的股票代码就可以了,是不是。
3、数据存放结构分析(三张表加财务比率,和对应的序号含义表,共八张表和一张MJ数字力分析表)
根据和讯网的查询结果,每一张利润表、资产负债表、现金流量表的结构如下所示是一致的。为了下一步排查方便,我们可以给每个字段顺序编号,对应值在另一张表里建立序号含义。(注意我的思考方式)
下面列举的内容较多,可以跳过直接进到下面第二部分。
利润表有29项资料,需要29个字段。分别是(1#会计年度/2#一、营业收入/3#减:营业成本/4#营业税金及附加/5#销售费用/6#管理费用/7#勘探费用/8#财务费用/9#资产减值损失/10#加:公允价值变动净收益/11#投资收益/12#其中:对联营企业和合营企业的投资收益/13#影响营业利润的其他科目/14#二、营业利润/15#加:补贴收入/16#营业外收入/17#减:营业外支出/18#其中:非流动资产处置净损失/19#加:影响利润总额的其他科目/20#三、利润总额/21#减:所得税/22#加:影响净利润的其他科目/23#四、净利润/24#归属于母公司所有者的净利润/25#少数股东损益/26#五、每股收益/27#(一)基本每股收益/28#(二)稀释每股收益/29#备注)
资产负债表有69项资料,需要69个字段。分别是(1#会计年度/2#货币资金/3#交易性金融资产/4#应收票据/5#应收账款/6#预付款项/7#其他应收款/8#应收关联公司款/9#应收利息/10#应收股利/11#存货/12#其中:消耗性生物资产/13#一年内到期的非流动资产/14#其他流动资产/15#流动资产合计/16#可供出售金融资产/17#持有至到期投资/18#长期应收款/19#长期股权投资/20#投资性房地产/21#固定资产/22#在建工程/23#工程物资/24#固定资产清理/25#生产性生物资产/26#油气资产/27#无形资产/28#开发支出/29#商誉/30#长期待摊费用/31#递延所得税资产/32#其他非流动资产/33#非流动资产合计/34#资产总计/35#短期借款/36#交易性金融负债/37#应付票据/38#应付账款/39#预收款项/40#应付职工薪酬/41#应交税费/42#应付利息/43#应付股利/44#其他应付款/45#应付关联公司款/46#一年内到期的非流动负债/47#其他流动负债/48#流动负债合计/49#长期借款/50#应付债券/51#长期应付款/52#专项应付款/53#预计负债/54#递延所得税负债/55#其他非流动负债/56#非流动负债合计/57#负债合计/58#实收资本(或股本)/59#资本公积/60#盈余公积/61#减:库存股/62#未分配利润/63#少数股东权益/64#外币报表折算价差/65#非正常经营项目收益调整/66#归属母公司所有者权益(或股东权益)/67#所有者权益(或股东权益)合计/68#负债和所有者(或股东权益)合计/69#备注)
现金流量表有70项资料,需要70个字段。分别是(1#报告年度/2#一、经营活动产生的现金流量/3#销售商品、提供劳务收到的现金/4#收到的税费返还/5#收到其他与经营活动有关的现金/6#经营活动现金流入小计/7#购买商品、接受劳务支付的现金/8#支付给职工以及为职工支付的现金/9#支付的各项税费/10#支付其他与经营活动有关的现金/11#经营活动现金流出小计/12#经营活动产生的现金流量净额/13#二、投资活动产生的现金流量/14#收回投资收到的现金/15#取得投资收益收到的现金/16#处置固定资产、无形资产和其他长期资产收回的现金净额/17#处置子公司及其他营业单位收到的现金净额/18#收到其他与投资活动有关的现金/19#投资活动现金流入小计/20#购建固定资产、无形资产和其他长期资产支付的现金/21#投资支付的现金/22#取得子公司及其他营业单位支付的现金净额/23#支付其他与投资活动有关的现金/24#投资活动现金流出小计/25#投资活动产生的现金流量净额/26#三、筹资活动产生的现金流量/27#吸收投资收到的现金/28#取得借款收到的现金/29#收到其他与筹资活动有关的现金/30#筹资活动现金流入小计/31#偿还债务支付的现金/32#分配股利、利润或偿付利息支付的现金/33#支付其他与筹资活动有关的现金/34#筹资活动现金流出小计/35#筹资活动产生的现金流量净额/36#四、汇率变动对现金的影响/37#四(2)、其他原因对现金的影响/38#五、现金及现金等价物净增加额/39#期初现金及现金等价物余额/40#期末现金及现金等价物余额/41#附注:1、将净利润调节为经营活动现金流量/42#净利润/43#加:资产减值准备/44#固定资产折旧、油气资产折耗、生产性生物资产折旧/45#无形资产摊销/46#长期待摊费用摊销/47#处置固定资产、无形资产和其他长期资产的损失/48#固定资产报废损失/49#公允价值变动损失/50#财务费用/51#投资损失/52#递延所得税资产减少/53#递延所得税负债增加/54#存货的减少/55#经营性应收项目的减少/56#经营性应付项目的增加/57#其他/58#经营活动产生的现金流量净额2/59#2、不涉及现金收支的重大投资和筹资活动/60#债务转为资本/61#一年内到期的可转换公司债券/62#融资租入固定资产/63#3、现金及现金等价物净变动情况/64#现金的期末余额/65#减:现金的期初余额/66#加:现金等价物的期末余额/67#减:现金等价物的期初余额/68#加:其他原因对现金的影响2/69#现金及现金等价物净增加额/70#备注)
财务比率有89项资料,需要89个字段。分别是(1#会计年度\2#债务状况\3#流动比率\4#速动比率\5#现金比率\6#权益负债比率\7#长期资产适合率\8#流动资产对负债总额比率\9#有息负债率\10#不良债权比率\11#存货流动负债比率(对金融企业无意义)\12#债务偿付比率\13#负债结构比率\14#坏帐备抵率\15#固定支出成本占总成本的比率\16#利息支付倍数\17#固定财务费用保付率\18#清算价值比率\19#营运资产与总资产的比率\20#现金与总资产的比率\21#获利能力\22#净资产收益率\23#总资产收益率\24#资本金收益率\25#主营业务利润率\26#主营收入毛利润率(金融企业指标名称变化)\27#主营收入税前利润率(金融企业指标名称变化)\28#主营收入税后利润率(金融企业指标名称变化)\29#扣除非经常损益后的净利润率\30#营业利润率\31#营业比率\32#成本费用利润率\33#销售期间费用率\34#非经常性损益比率\35#关联交易比率\36#本期股利收益率\37#股利支付比率\38#收益留存比率\39#运营能力\40#应收帐款周转率\41#应收帐款回收期(天) (对金融企业无意义)\42#流动资产周转率\43#固定资产周转率(对金融企业无意义)\44#存货周转率(对金融企业无意义)\45#存货销售期(天) (对金融企业无意义)\46#总资产周转率(金融企业指标名称变化)\47#净资产周转率\48#主营利润比重\49#流动资产对总资产的比率\50#财务能力\51#资产负债率\52#资本化比率\53#资本固定化比率\54#资本周转率\55#固定资产与长期负债率\56#固定资产与股东权益比率\57#固定资产净值率(%)\58#权益系数\59#长期负债比率(6)\60#产权比率\61#净值与负债比率\62#净值与固定资产比率\63#有形资产净值债务率\64#股东权益比率\65#成长能力\66#主营业务增长率\67#应收款项增长率\68#净利润增长率\69#固定资产投资扩张率\70#总资产扩张率\71#每股收益增长率\72#净资产增长率(%)\73#现金流量\74#每股经营现金净流量(元)\75#资产的经营现金流量回报率(%)\76#净利润现金含量\77#经营现金净流量对负债的比率\78#经营活动产生的现金净流量增长率\79#营业活动收益质量\80#主营业务现金比率\81#现金流量结构比率\82#单股指标\83#每股净资产\84#调整后每股净资产\85#每股收益\86#扣除非经常损益的每股收益\87#每股主营收入\88#每股经营活动产生的现金流量净额\89#每股资本公积)
MJ数字力分析三表合一有46项资料,需要46个字段。分别是(
0#会计年度\1#资产负债比率\2#现金与约当现金(占总资产%)\3#应收款项(占总资产%)\4#存货(占总资产%)\5#流动资产(占总资产%)\6#非流动资产(占总资产%)\7#总资产(占总资产%)\8#应付款项(占总资产%)\9#流动负债(占总资产%)\10#非流动负债(占总资产%)\11#股东权益(占总资产%)\12#负债和所有者权益(占总资产%)\13#现金流量表\14#营业活动现金流量(from 损益表)\15#投资活动现金流量(from 资产负债表左边)\16#筹资活动现金流量(from 资产负债表右边)\17#五大财务比率\18#财务比率\19#财务结构\20#负债占资产比率(%)\21#长期资金占不动产及设备比率(%)\22#偿债能力\23#流动比率(%)\24#速动比率(%)\25#营运能力\26#应收款项周转率(次/年)\27#应收款项周转天数(天)\28#存货周转率(次/年)\29#存货周转天数(天)\30#固定资产周转率(次/年)\31#总资产周转率(次/年)\32#盈利能力\33#ROA=资产收益率(%)\34#ROE=净资产收益率(%)\35#税前纯益占实收资本比率(%)\36#毛利率(%)\37#营业利润率(%)\38#净利率(%)\39#营业费用率(%)\40#经营安全边际率(%)\41#EPS=基本每股收益(元)\42#现金流量\43#现金流量比率\44#现金流量允当比率/45#现金再投资比率)
第二部分,爬虫
实际上爬虫就是网页分析提取网页数据的意思。
函数库BS4 BeautifulSoup 的详细说明链接http://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/ 。包含了详细的说明,大量的例子,大家可以熟悉里面的界面和部分内容,不做要求,BS4的导入(import bs4)上次课练习过了。
request库的中文使用文档 http://cn.python-requests.org/zh_CN/latest/ 可以看到详细的说明,大量的例子。
资源,无限的资源,这就是学Python的好处。
最后,介绍一个爬虫分析页面需要的工具:Google Chrome浏览器,找到“开发者工具”,快捷键是ctrl+shift+I,可以把原始网页源代码规范化,如图:
开发者工具允许我们分析页面,在工具里规范化代码,做成了可折叠的目录形式,鼠标放在上面时,左边对应的网页就会出现浅蓝的方框,说明鼠标位置的代码形成了这部分的展示形式。移动鼠标,浅蓝方框的位置也会变化。有时候浅蓝方框包含的页面内容很多,左边有黑色三尖角,点开它折叠的部分,就更加细化的展示出来。这样我们对着网页浅蓝的方框找到需要的位置,下次课我们可以截取鼠标指示的代码特征写出程序,使程序具备解读网页的能力。
这里你先练习一下,体会开发者工具和网页的关系。
今天的课依然还是预准备阶段。讲了为完成目标,规划的内容,完成了数据库要建立哪些字段,介绍了爬虫工具,两个库和Google Chrome开发者工具,网页源码与网页可见部分的关系。
作业是请你完成今天的课程内容,特别是爬虫和开发者工具这部分。期待你把自己的体会、感悟、想法还有问题留言给我,与同学们一起进步。
下次课是 吸星大法获取上市公司财务数据。