各位表亲们好!今天我给大家分享一个动态网抓(感觉这个名字很酷!虽然可能算不上动态网抓)。希望能跟大家一起学习,有需要修改之处,还请大家指点指点。谢谢!
如上图:我需要到网易财经网上抓取某支股票的财务情况,需要将"资产负债表","利润表","现金流量表"抓取到excel中,而且当修改股票的交易代码时,数据能够动态更新(需要刷新)。结果如下图:在excel中更改股票代码后,再到资产负债表中刷新,可以看到数据已经改变了.(不太会用录屏软件,录的不好望见谅),下面我给大家讲解下怎么实现的吧: 第一步:首先,先去抓取一份资产负债表。复制 http://quotes.money.163.com/stock 进入网易财经网,拉到"行业版块"处,随便进入一个行业。再随便选择一种股票,选择财务分析项,点击下面的资产负债表。最后再将这个网址复制下来。为了不超过2M,GIF录制有点快,还请见谅。大家可以参照文字叙述的方法来操作。具体操作如下:
第二步:打开excel,点击"数据"选项下的"自网站",然后将上一步复制的网址粘贴进去。最后点击"确定". 接着就进入了"导航器".选择带"文件夹图标"的那一项。再点击下面的编辑。就可以进入power query的查询编辑器了。 第三步:进入查询编辑器后。筛选第三列,将null筛选掉。然后保留最后一列,再将表名修改为”资产负债表"后,再复制一份表格。对于下图的操作,我做下解释。 1、为什么要将第三列的null筛选掉?首先,我需要抓取的数据是网站上面的资产负债表,并不需要其他数据。第三列是"类名",可以看到第二、三行中,含有Table(列表)字符的,而另两个并没有类名。所以将null筛选掉,保留"列表". 2、为什么需要复制一份表格?将null筛选出去后,当你将Data列展开后,会发现资产负债表的第一列和其他列的数据完全是错开的。因为第一列的数据和其他数据是分成两个表导入的。也就能解释为什么会有两行存在Table了。所以我复制一份"资产负债表"的副本,方便后面合并。 另:这一步操作,不知道有没有大神可以在不复制副本的情况,将第一列和其他数据合并在一起?希望能得到指点!.
第四步:将两个表格的列表都扩展。第一个表:将第一列的null筛选掉,并删除其他列。所保留的数据就是"资产负债表"的第一列了。第二个表:只选择第一列的null,并删除第一列,保留其他列。这个表所保存的数据为"资产负债表"中,除去第一列的其他数据。
接下来可以利用索引列,将第一列(资产负债表) 和 其他数据 (资产负债表2) 合并起来。但这两个表格并不能直接用索引来合并,需要做一些处理。如下图:从这张图可以发现,在"资产"和"流动资产"那两行是没有数据,而且后面的数据中还有这样的情况。而在抓取的表格中,这些行都是存在的,而且展示资产负债表,这些行也是必不可少的。关键是”其他数据"(资产负债表2)中是跳过了这些行。所以需要资产负债表(第一列)中的索引忽略这些没有数据的行,并且还要连续。 第五步:在资产负债表中发现,凡是有数字的行,其对应的第一列中都会有标明单位(万元)。利用这一点,可以判断出哪些行没有数字 了。.首先在资产负债表2(其他数据)中增加索引列。然后在资产负债表(第一列)中也增加一列索引列。然后增加一列条件列,判断如果第一列包含 "(",则返回对应的索引,否则返回9E307.然后将条件列进行升序排列。.这样没有数字的行就会排到最后几行了。再增加一列索引列。这时所增加的索引列,是忽略了没有数字的行,所得到的索引正好与负债表2(其他数据)中的索引对应了。 注:这里的9E307是一个较大的数字,一般没有比这个数字更大的了。
第六步:根据索引进行合并查询。注意资产负债表(第一列)中的索引,需要根据最后一次所产生的索引来进行匹配。联接种类选择第三个:完全外部(两者中的所有行),点击确定,将匹配的列筛选掉"索引"后扩展开。接着删除 条件列和最后一次增加的索引列,然后将第一次增加的索引列进行升序排序。现在资产负债表的基本已经完成了。接下来需要做一个查询表,通过查询表中的股票代码,来抓取资产负债表。
第七步:创建查询表。关闭“查询编辑器",在excel中随便一个位置输入股票代码,然后通过从表格,将这个股票代码存入查询编辑器中。最后将表名修改为"查询表",还有将股票代码的格式设置为文本。.
第八步:通过M函数创建动态查询网址。如下图:将"资产负债表"和“资产负债表2"中的网址都需要修改。点击表格最开始导入的"源",将里面的6位数股票代码修改为:"&Text.Combine(查询表[列1])&" 。也可以直接在"高级编辑器"中修改。一般修改后会出现错误。出现错误后,可以点击最后一步操作,再点击 继续。将选项打勾确定就行了。如果最后一步操作没有"继续 ",可以先退出"查询编辑器“,退出后就会弹出对话框。 关于上一步所出现的错误,属于excel中的隐私级别的防护。防止因修改网址出现 的隐私问题。官方解释如下 :
第九步:将表格格式调整后,可以直接退出"查询编辑器".如果没有设置,默认会自动将表格上载至excel中。接下来,因为"资产负债表2"只是一份辅助查询表,并不需要展示。所以可以在”查询&连接"中右键点击表格。选择"加载到 “,在对话框中选择”仅创建连接",点击确定就可以了。.而"资产负债表"是需要展示在excel中的。但目前所展示 的数据,行顺序是与"资产负债表"中的行顺序不一致的。所以也需要在”查询&连接"中右键点击表格。选择"加载到 “,这里需要选择 "表" .同时,需要将 “将数据添加到数据模型" 这个选项的勾去掉。然后点击确定。这样"资产负债表"中的行顺序就是正常的了。然后只需要在"查询表"中修改股票代码 并在"资产负债表"中刷新,就可以抓取 不同股票的对应表格数据了。
感谢表亲们的阅读!以上就是 抓取 "资产负债表" 的步骤了。不知道各位表亲有没有自己试试?大家也可以按照上面的步骤去把 "利润表" 和 "现金流量表" 也抓取下来。注意:利润表的格式和资产负债表的格式有些不一样,不过抓取利润表更容易 些。大家可以试试! 如果有不懂或出现问题的地方,可以在下面留言,大家一起讨论,一起解决,一起学习!同时,也希望大家能够指出不足,共同进步! |