IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 6.2 新浪财经——资产负债表获取(打印js渲染后的网页表格) -> 正文阅读

[Python知识库]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也能获取财务报表,演示代码如下:
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 22:39:25  更:2022-04-07 22:41:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:15:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码