Python如何实现从PDF文件中爬取表格数据(代码示例)


本文摘自php中文网,作者不言,侵删。

本篇文章给大家带来的内容是关于Python如何实现从PDF文件中爬取表格数据(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

??本文将展示一个稍微不一样点的爬虫。
??以往我们的爬虫都是从网络上爬取数据,因为网页一般用HTML,CSS,JavaScript代码写成,因此,有大量成熟的技术来爬取网页中的各种数据。这次,我们需要爬取的文档为PDF文件。本文将展示如何利用Python的camelot模块从PDF文件中爬取表格数据。
??在我们的日常生活和工作中,PDF文件无疑是最常用的文件格式之一,小到教材、课件,大到合同、规划书,我们都能见到这种文件格式。但如何从PDF文件中提取其中的表格,这却是一个大难题。因为PDF中没有一个内部的表示方式来表示一个表格。这使得表格数据很难被抽取出来做分析。那么,我们如何做到从PDF中爬取表格数据呢?
??答案是Python的camelot模块!
??camelot是Python的一个模块,它能够让任何人轻松地从PDF文件中提取表格数据。可以使用以下命令安装camelot模块(安装时间较长):

1

pip install camelot-py

camelot模块的官方文档地址为:https://camelot-py.readthedoc...。
??下面将展示如何利用camelot模块从PDF文件中爬取表格数据。

例1

??首先,让我们看一个简单的例子:eg.pdf,整个文件只有一页,这一页中只有一个表格,如下:

9419034-4473cf94547e62f4.png

使用以下Python代码就可以提取该PDF文件中的表格:

1

2

3

4

5

6

7

8

9

10

import camelot

 

# 从PDF文件中提取表格

tables = camelot.read_pdf('E://eg.pdf', pages='1', flavor='stream')

 

# 表格信息

print(tables)

print(tables[0])

# 表格数据

print(tables[0].data)

输出结果为:

1

2

3

<TableList n=1>

<Table shape=(4, 4)>

[['ID', '姓名', '城市', '性别'], ['1', 'Alex', 'Shanghai', 'M'], ['2', 'Bob', 'Beijing', 'F'], ['3', 'Cook', 'New York', 'M']]

分析代码,camelot.read_pdf()为camelot的从表格中提取数据的函数,输入的参数为PDF文件的路径,页码(pages)和表格解析方法(有stream和lattice两个方法)。对于表格解析方法,默认的方法为lattice,而stream方法默认会把整个PDF页面当做一个表格来解析,如果需要指定解析页面中的区域,可以使用table_area这个参数。
??camelot模块的便捷之处还在于它提供了将提取后的表格数据直接转化为pandas,csv,JSON,html的函数,如tables[0].df,tables[0].to_csv()函数等。我们以输出csv文件为例:

1

2

3

4

5

6

7

import camelot

 

# 从PDF文件中提取表格

tables = camelot.read_pdf('E://eg.pdf', pages='1', flavor='stream')

 

# 将表格数据转化为csv文件

tables[0].to_csv('E://eg.csv')

得到的csv文件如下:

9419034-83b38d810067c212.png

例2

??在例2中,我们将提取PDF页面中的某一区域的表格的数据。PDF文件的页面(部分)如下:

9419034-6549895a9ac04777.png

阅读剩余部分

相关阅读 >>

Python如何实现无限循环

Python中fd()是什么

Python可以做动图吗

为什么黑客都使用Python

Python可以开发app吗

Python关键字yield的介绍

介绍Python应用学习之qrcode生成二维码

基于Python的多进程共享变量正确打开方式

Python的链表数据结构讲解

Python为什么要装32位的

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...