• 在搜索引擎中搜索“贵州茅台 新浪财经”,进入新浪财经中“贵州茅台”的(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也能获取财务报表,演示代码如下:

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

  1. java 爬虫js渲染_java_爬虫_获取经过js渲染后的网页源码

    md 弄了一天了--(这个月不会在摸爬虫了,浪费生命) 进入正题: 起初是想写一个爬虫来爬一个网站的视频,但是怎么爬取都爬取不到,分析了下源代码之后,发现源代码中并没有视频的dom 但是在浏览器检查元 ...

  2. htmlunit抓取js执行后的网页源码

    上次我不是写了一个自动抓取博客访问量吗 (点击打开链接) 可是昨天晚上我又运行的时候,发现不能用了.. 运行了几次 发现使用URLConnection 得到的网页源码和浏览器直接查看的不同. URLC ...

  3. js读excel到网页表格预览

    xlsx.js读取xls,xlsx文件到网页表格预览(bootstrap table) 以下描述仅展示主要功能,具体代码实现在gtihub上,链接在文章最后. 1.js准备 读取文件的xlsx.js+ ...

  4. python获取js渲染后的源码_Python使用PAMIE获取JS渲染后的HTML源码 - 米扑博客

    前因 现在的网页越来越动态和漂亮,大量地用到了Javascript,包括但是不限于Ajax,这样一来直接查看网页源代码的话的,获取到的并不是真正的渲染完成后的页面.这对采集来说,是一个很大的挑战. 在 ...

  5. python获取渲染之后的网页_Phantomjs抓取渲染JS后的网页(Python代码)

    最近需要爬取某网站,无奈页面都是JS渲染后生成的,普通的爬虫框架搞不定,于是想到用Phantomjs搭一个代理. Python调用Phantomjs貌似没有现成的第三方库(如果有,请告知小编),漫步了 ...

  6. htmlUnit的读取js渲染的页面

    htmlUnit的读取js渲染的页面 我这边有个这么的需求,要求前端每次上版本的时候,有一个版本号.然后后端去爬前端,比较禅道的版本发布计划,如果发布计划和生产上的版本号不一致,就告警. 这个跟后端的 ...

  7. 关于js渲染网页时爬取数据的思路和全过程(附源码)

    于js渲染网页时爬取数据的思路 首先可以先去用requests库访问url来测试一下能不能拿到数据,如果能拿到那么就是一个普通的网页,如果出现403类的错误代码可以在requests.get()方法里 ...

  8. springboot获取原生js请求_七节课带你学会SpringBoot,第三课

    ☞点击观看Sping Boot完整视频教程☜ 一.Spring Boot整合Druid 1. 数据库连接池回顾 在内存中一块空间,空间中放置N多个数据库连接对象.对象可以是处于活动状态,也可以是空闲( ...

  9. QT实现Qt Quick和three.js渲染和实现QML3D控件

    QT实现Qt Quick和three.js渲染和实现QML3D控件 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 结合Qt Quick和three.js渲染. 演示 ...

最新文章

  1. ES6新增特性——Promise
  2. java 99乘法表对齐_Java实现九九乘法表的完整实例(对齐版)
  3. 今天你们表现的真棒!!!
  4. 动态卡片:富媒体内容井喷式增长下,新一代移动端动态研发的模式
  5. 以太坊—JSON RPC API
  6. python如何读取文件数据恢复_删python目录
  7. JAVA程序错误总结
  8. Redis实战(十二)Redis实现分布式锁
  9. 分布式服务的幂等性设计,值得学习!
  10. 关于期权的若干硬知识,知道这些就不那么担心了
  11. windows强制删除文件
  12. cf----2019-10-06(Slime,Shashlik Cooking,Mysterious Crime)
  13. 信安冬令营实训报告(信息收集,主机渗透,内网渗透)
  14. 计算机配件出口单证,出口制单
  15. 【sdx62】XBL设置共享内存变量,然后内核层获取变量实现
  16. 【论文极速看】ERNIE-VIL 一种基于场景图解析的多模态表征方法
  17. 华为云All-Flash战略:当“慢生活”遇上“快存储”
  18. 脚本引擎小PK: SpiderMonkey vs V8
  19. 小米科学计算机上的,计算器+
  20. android ratingbar 版本支持,Android用来替代RatingBar的自定义ImageRatingView

热门文章

  1. 概率论 各种分布及其期望、方差、分布函数
  2. ps打开笔压仍没有效果
  3. Visual Hull基于序列图像的三维重建
  4. JZ73 翻转单词序列
  5. sql 注入_商洛学院司徒荆_新浪博客
  6. 浅谈MB、Mb、MBps、Mbps - 计算机常识
  7. html5游戏开发_HTML5游戏开发–第9课
  8. java版能播flac_Java中如何写FLAC文件实例
  9. UEFI启动流程浅析
  10. js逆向-ast混淆还原入门案例(2)