tabula的功能比camelot更加强大,可以同时对多个表格数据进行提取。项目的具体地址请参考:https://github.com/chezou/tabula-py

安装

tabula的安装是非常简单的:

pip install tabula-py  # 安装python扩展

安装之后检验这个库是否安装成功:

读取PDF文件

通过tabula这个库来读取PDF文件:

df1 = tabula.read_pdf("test.pdf",pages="all")

然后我们发现列表中唯一的一个元素就是dataframe:

输出成csv文件

将读取到的数据输出成CSV格式的文件:

# 方式1:间接输出成csv格式
df2.to_csv("test2.csv")# 方式2:直接输出成csv格式
tabula.convert_into("test.pdf","test3.csv",output_format="csv",pages='all')

上面读取的PDF文件是比较简单的,只有一页,而且刚好是一个很标准的表格形式的数据,下面看一个比较复杂的例子:

  1. PDF文件总共有3页
  2. 每页的表格数据格式有差异

下面是第一页,第一列可以看成是索引:

在第二页中有两份表格,而且中间有很多的空白行:

第三页的数据比较标准:

这3页是在同一个PDF文件中,这3页是在同一个PDF文件中,这3页是在同一个PDF文件中

读取第一个表格

tab1 = tabula.read_pdf("data.pdf",stream=True)
len(tab1)

上面的红色提示中我们看到:当没有指定pages参数的时候,只会默认读取第一页的数据,所以列表的长度为1。

转成dataframe后将原来的索引变成新的一列(部分数据)

读取PDF全部数据

通过pages来读取全部数据:

tab2 = tabula.read_pdf("data.pdf",pages="all")   # 获取全部数据all
len(tab2)

通过指定pages="all":

  1. 获取到了4个表格的数据,列表长度为4
  2. 第一个表格转成了dataframe数据后原来的行索引不存在,这个是和上面(没有pages参数)不同的地方

获取指定页面的数据

tab3 = tabula.read_pdf("data.pdf", pages=3,   # 表示第3页的数据stream=True)
tab3[0]

同时获取两个表格的数据:

tab4 = tabula.read_pdf("data.pdf", pages="1,3",  # 同时2个表格数据stream=True)
len(tab4)  # 长度为2

读取指定位置(面积)的数据

通过area参数来指定:

删除不需要的信息

删除在读取的表格中我们不需要的字段信息

输出不同格式文件

可以将得到的数据输出成不同格式的文件,以json格式为例:

tabula.convert_into("data.pdf",  # 源文件"test4.json",   # 输出文件名output_format="json")  # 文件格式

python tabula获取pdf的列表数据相关推荐

  1. 管理员信息管理之获取管理员用户列表数据

    管理员信息管理 在系统管理中我们需要完成管理员表的增删改查,这时候我们可以借助于视图集中的ModelViewset来完成相应的操作 获取管理员用户列表数据 接口分析 请求方式: GET /meiduo ...

  2. 分组表管理之获取用户组表列表数据

    分组表管理 在系统管理中我们需要完成用户组表的增删改查,这时候我们可以借助于视图集中的ModelViewset来完成相应的操作 获取用户组表列表数据 接口分析 请求方式: GET /meiduo_ad ...

  3. 订单管理之获取订单表表列表数据

    获取订单表表列表数据 [订单数据是不能删除的,只能修改订单信息的状态] 接口分析 请求方式: GET /meiduo_admin/orders/?keyword=<搜索内容>&pa ...

  4. SPU表管理之查询获取SPU表列表数据

    SPU表管理 在SPU表中我们需要对SKU表数据进行增删改查操作,这时候我们可以借助于视图集中的ModelViewset来完成相应的操作 查询获取SPU表列表数据 在获取sku数据时,我们在请求中包含 ...

  5. SKU表管理之查询获取sku表列表数据

    SKU表管理 在sku表中我们需要对SKU表数据进行增删改查操作,这时候我们可以借助于视图集中的ModelViewset来完成相应的操作 查询获取sku表列表数据 [商品的详细信息,要引入事务的管理, ...

  6. 规格表管理之查询获取规格表列表数据

    规格表管理 在规格表中我们需要对规格表数据进行增删改查操作,这时候我们可以借助于视图集中的ModelViewset来完成相应的操作 查询获取规格表列表数据 接口分析 请求方式: GET /meiduo ...

  7. ajax怎样获得表头信息,layui.table动态获取表头和列表数据示例

    layui.table动态获取表头和列表数据示例 2020年07月14日 | 萬仟网IT编程 | 我要评论 ```javascript//表格layui.use('table', function() ...

  8. Python爬虫获取基金持仓股票数据

    Python爬虫小实战 . 通过Python爬虫获取基金持仓股票数据,按照基金持仓金额对股票进行排行,并储存在本地数据库. from urllib import request from bs4 im ...

  9. QQ登录回调地址实现:【获取qq好友列表数据】附实例

    QQ登录回调地址实现:[获取qq好友列表数据] <?php require_once("../../API/qqConnectAPI.php"); $qc = new QC( ...

最新文章

  1. 在CentOS 7中安装与配置Tomcat-8方法
  2. linux下jboss的安装配置
  3. Leader忙死,下属闲死,谁的错?总监让我学习,猴子理论
  4. Linux文件系统之文件的读写
  5. 开源视频直播软件介绍
  6. html 使用符号设置固定链接,让woocommerce使用数字id的固定链接插件
  7. opencv 腐蚀 matlab,Opencv3编程入门笔记(4)腐蚀、膨胀、开闭运算、漫水填充、金字塔、阈值化、霍夫变换...
  8. AC Automaton
  9. Mysql索引示例_MYSQL索引实例
  10. Android开机广播和关机广播
  11. 菜鸟:春节保障300城照常收货 3亿补贴直接发给一线员工
  12. 陈天奇的tvm更新了:VTA,开源AI芯片栈
  13. 单源最短路径的Bellman-Ford算法。
  14. C语言 数组指针详解
  15. 国开计算机上机表格试题答案,国开大学计算机实操答案一
  16. UI自动化测试潮流代表工具—testsigma 快速入门
  17. 基于Java语言的51单片机串口通讯PC机程序
  18. 关于:什么是土地用途管制?针对村庄用地的各个地类每一个用地的用途管制的规则?针对土地用地调整怎么进行申报?
  19. c语言算摄氏温度和绝对温度,将华氏度转换为绝对温度C语言
  20. 计算机显示器接法,电脑和显示器怎么连接_显示器连接电脑方法-win7之家

热门文章

  1. 如何联系心仪的导师(保研、考研)
  2. vivo 全球商城:订单中心架构设计与实践
  3. 色差仪在药品溶液颜色品质管控的应用
  4. 给Neuralink员工“头顶绑炸弹”,马斯克的脑机能进行人体实验吗?
  5. 程序开发之——低耦合高内聚
  6. 【剑指offer题解】二维数组中的查找
  7. [激活函数] 非线性原因分析、Sigmoid、TanH、ReLU和ELU
  8. Java中int、double、char等基础数据类型的取值范围
  9. Scrapy 简单爬取厨房网站菜谱清单,并将结果保存为csv文件
  10. 【lua】常见lua报错类型——自用收藏