6.2 新浪财经——资产负债表获取(打印js渲染后的网页表格)

  • 在搜索引擎中搜索“贵州茅台 新浪财经”,进入新浪财经中“贵州茅台”的(https://finance.sina.com.cn/realstock/company/sh600519/nc.shtml),单击“公司研究”栏目下的“更多”链接,如下图所示。
    在这里插入图片描述
  • 在弹出的页面中可查看资产负债表、利润表、现金流量表等财务报表,下面来爬取资产负债表,单击“资产负债表”链接,显示的内容如下图所示。该页面的网址为https://vip.stock.finance.sina.com.cn/corp/go.php/vFD_BalanceSheet/stockid/600519/ctrl/part/displaytype/4.phtml
    在这里插入图片描述

技巧:如果想爬取利润表或现金流量表,可用开发者工具获取相应链接的XPath表达式,再用Selenium库模拟单击链接来切换界面。

  • 这个页面中的数据以表格形式呈现,但是该页面是动态渲染出来的,不能用read_html()函数以访问网址的方式爬取数据。而是需要先用Selenium库获取网页源代码,再用read_html()函数解析网页源代码,提取表格数据。
  • 先导入Selenium库,然后访问网址,获取网页源代码,代码如下:
from selenium import webdriver
browser = webdriver.Chrome() #若想启用无界面浏览器模式,可参考4.1节
url = 'https://vip.stock.finance.sina.com.cn/corp/go.php/vFD_BalanceSheet/stockid/600519/ctrl/part/displaytype/4.phtml'
browser.get(url)
data = browser.page_source #获取网页源代码
#print(data)
  • 然后导入pandas库,用read_html()函数解析网页源代码,提取表格数据,代码如下:
# 用read_html()函数解析网页源代码,提取表格数据
import pandas as pd
table = pd.read_html(data) #table是一个包含网页中所有表格数据的列表
  • 网页中表格众多,需要确定资产负债表在第几个表格。通过for循环语句遍历列表table,然后依次打印输出各个表格的序号和内容,代码如下:
# 获取网页源代码
from selenium import webdriver
browser = webdriver.Chrome() #若想启用无界面浏览器模式,可参考4.1节
url = 'https://vip.stock.finance.sina.com.cn/corp/go.php/vFD_BalanceSheet/stockid/600519/ctrl/part/displaytype/4.phtml'
browser.get(url)
data = browser.page_source #获取网页源代码

# 用read_html()函数解析网页源代码,提取表格数据
import pandas as pd
table = pd.read_html(data) #table是一个包含网页中所有表格数据的列表

# 依次打印出各个表格的序号和内容
for i in range(len(table)):
    print(i)
    print(table[i])
  • 打印输出结果如下图所示,可以看到序号为14的表格(即第15张表格)是我们需要的资产负债表。
    在这里插入图片描述
  • 因此,通过table[14]即可提取所需数据,代码如下:
df = table[14]
df
  • 打印输出结果如下图所示。可以看到列索引(表头)有点问题,这是因为原表格的表头中合并单元格。
    在这里插入图片描述
  • 这里我们希望把上图中的第1行数据设置为列索引,然后从第2行开始选取表格数据,并且删除含有空值的行,代码如下:
df.columns = df.iloc[0] #设置列索引为原表格的第1行
df = df[1:] #从第2行开始选取数据
df = df.dropna() #删除含有空值的行,若只想删除全为空值的行,可写成dropna(how='all')
df #在jup打印输出
  • 打印结果如下图所示。
    在这里插入图片描述
  • 最后将数据导出为Excel工作簿,代码如下:
df.to_excel('贵州茅台-资产负债表.xlsx',index=False) #设置index=False以忽略行索引

补充知识点:用Tushare Pro获取财务报表(暂时不会)

  • 用4.2.3 节的补充知识点介绍的Tushare Pro也能获取财务报表,演示代码如下:
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值