首页 >>  正文

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

来源:www.zuowenzhai.com    作者:编辑   日期:2024-06-02

本篇文章给大家带来的内容是关于Python如何实现从PDF文件中爬取表格数据(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
??本文将展示一个稍微不一样点的爬虫。
??以往我们的爬虫都是从网络上爬取数据,因为网页一般用HTML,CSS,JavaScript代码写成,因此,有大量成熟的技术来爬取网页中的各种数据。这次,我们需要爬取的文档为PDF文件。本文将展示如何利用Python的camelot模块从PDF文件中爬取表格数据。
??在我们的日常生活和工作中,PDF文件无疑是最常用的文件格式之一,小到教材、课件,大到合同、规划书,我们都能见到这种文件格式。但如何从PDF文件中提取其中的表格,这却是一个大难题。因为PDF中没有一个内部的表示方式来表示一个表格。这使得表格数据很难被抽取出来做分析。那么,我们如何做到从PDF中爬取表格数据呢?
??答案是Python的camelot模块!
??camelot是Python的一个模块,它能够让任何人轻松地从PDF文件中提取表格数据。可以使用以下命令安装camelot模块(安装时间较长):
pip install camelot-pycamelot模块的官方文档地址为:https://camelot-py.readthedoc...。
??下面将展示如何利用camelot模块从PDF文件中爬取表格数据。
例1??首先,让我们看一个简单的例子:eg.pdf,整个文件只有一页,这一页中只有一个表格,如下:
使用以下Python代码就可以提取该PDF文件中的表格:
import camelot
# 从PDF文件中提取表格
tables = camelot.read_pdf('E://eg.pdf', pages='1', flavor='stream')
# 表格信息
print(tables)
print(tables[0])
# 表格数据
print(tables[0].data)输出结果为:
<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文件为例:
import camelot
# 从PDF文件中提取表格
tables = camelot.read_pdf('E://eg.pdf', pages='1', flavor='stream')
# 将表格数据转化为csv文件
tables[0].to_csv('E://eg.csv')得到的csv文件如下:
例2??在例2中,我们将提取PDF页面中的某一区域的表格的数据。PDF文件的页面(部分)如下:
为了提取整个页面中唯一的表格,我们需要定位表格所在的位置。PDF文件的坐标系统与图片不一样,它以左下角的顶点为原点,向右为x轴,向上为y轴,可以通过以下Python代码输出整个页面的文字的坐标情况:
import camelot
# 从PDF中提取表格
tables = camelot.read_pdf('G://Statistics-Fundamentals-Succinctly.pdf', pages='53',
flavor='stream')
# 绘制PDF文档的坐标,定位表格所在的位置
tables[0].plot('text')输出结果为:
UserWarning: No tables found on page-53 [stream.py:292]整个代码没有找到表格,这是因为stream方法默认将整个PDF页面当作表格,因此就没有找到表格。但是绘制的页面坐标的图像如下:
仔细对比之前的PDF页面,我们不难发现,表格对应的区域的左上角坐标为(50,620),右下角的坐标为(500,540)。我们在read_pdf()函数中加入table_area参数,完整的Python代码如下:
import camelot
# 识别指定区域中的表格数据
tables = camelot.read_pdf('G://Statistics-Fundamentals-Succinctly.pdf', pages='53',
flavor='stream', table_area=['50,620,500,540'])
# 绘制PDF文档的坐标,定位表格所在的位置
table_df = tables[0].df
print(type(table_df))
print(table_df.head(n=6))输出的结果为:
<class 'pandas.core.frame.DataFrame'>
0 1 2 3
0 Student Pre-test score Post-test score Difference
1 1 70 73 3
2 2 64 65 1
3 3 69 63 -6
4 ? ? ? ?
5 34 82 88 6总结在具体识别PDF页面中的表格时,除了指定区域这个参数,还有上下标、单元格合并等参数,详细地使用方法可参考camelot官方文档网址:https://camelot-py.readthedoc...。

八爪鱼采集器是一款功能全面、操作简单、适用范围广泛的互联网数据采集器。如果您需要采集数据,八爪鱼采集器可以为您提供智能识别和灵活的自定义采集规则设置,帮助您快速获取所需的数据。了解更多八爪鱼采集器的功能与合作案例,请前往官网了解更多详情


17038041514python怎样读取pdf文件的内容
陆萧须答:1、首先要下载一个处理pdf的组件pdfminer,百度搜索去官网下载 2、下载完成解压以后,打开cmd进入用命令安装。python setup.py install 进行安装 3、我们来测试一下是否安装成功了,引入这个模块,运行一下代码,没有报错就说明安装成功了 4、官网有文档也有代码示例 from pdfminer.pdfparser import PD...

17038041514python在pdf指定位置添加图片
陆萧须答:1、先在代码文件的同级目录下新建两个文件夹:imgs和pdfs。文件夹imgs内放入相关图片。2、安装好相应的依赖包。3、代码中有两个函数,将所有的图片文件转为相应的pdf,将所有的pdf合并为一个pdf。4、点击添加图片即可。

17038041514如何利用Python抓取PDF中的某些内容
陆萧须答:可以转换成TXT再抓取 from cStringIO import StringIOfrom pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreterfrom pdfminer.converter import TextConverterfrom pdfminer.layout import LAParamsfrom pdfminer.pdfpage import PDFPagedef convert_pdf_2_text(path): rsrcmgr = PDFResourceManag...

17038041514python取出pdf中的svg
陆萧须答:使用pdf2image和svglib库。python取出pdf中的svg可以使用Python中的pdf2image和svglib库,将PDF文件中的每一页转换为SVG格式,然后将SVG转换为reportlab图像对象,最后将图像对象保存为PDF文件。SVG为网络定义基于矢量的图形是万维网联盟的标准。当SVG图像被放大或改变大小时,其图形质量不会丢失。

17038041514如何利用Python对PDF文件做OCR识别
陆萧须答:1.安装tesseract 2.安装PyOCR 3.安装Wand和PIL 在我们开始之前,还需要另外安装两个依赖包。一个是Wand。它是Imagemagick的Python接口。我们需要使用它来将PDF文件转换成图像:我们也需要PIL因为PyOCR需要使用它。你可以查看官方文档以确定如何将PIL安装到你的操作系统中。5.开始 现在我们需要获得OCR库(在...

17038041514如何使用python来获取pdf文件里的文字,最好是不能乱码
陆萧须答:第一种文字型PDF比较简单,可以采用格式转换的方式直接转换PDF文件为文本。打开PDF文字识别软件,执行“文件”-“打开图像...”导入PDF文件,然后执行“输出”-“PDF文件转换为TXT文件”第二种图像型PDF,有的PDF都是扫描图片,这个就不能复制文字了,可以采用OCR识别的方式,将PDF文件转换为可编辑文档。...

17038041514图片提取框架和文字怎么操作?
陆萧须答:图片提取文字需要用特定的软件,现在很多手机APP都可以做到的,我用的QQ浏览器,直接拍照秒提取文字,简单又方便还不限制手机品牌:具体步骤:打开QQ浏览器,点击扫描王入口 找到提取文字页面,对准文字拍摄 选择需要提取的文字 导出结果就可以了

17038041514python爬取pdf中的日期
陆萧须答:小到教材、课件,大到合同、规划书,我们都能见到这种文件格式但如何从PDF文件中提取其中的表格,这却是一个大难题因为PDF中没有一个内部的表示方式来表示一个表格这使得表格数据很难被抽取出来做分析。camelot是Python的一个模块,它能够让任何人轻松地从PDF文件中提取表格数据。

17038041514如何利用Python抓取PDF中的某些内容
陆萧须答:利用pdfbox,目前最好的pdf提取工具,功能非常强大,最近刚完成了类似的一个需求。实现方式是用python请求pdfbox的jar,根据传入的参数完成各种功能,非常简单。

17038041514Python解析PDF表格——PDFPlumber vs Camelot
陆萧须答:相对而言,LEED项目所对应的 项目评分表PDF文件 的数据更为规范完整。因此考虑尝试解析出PDF文件中的表格,以便后续分析。Python 处理PDF文件的程序包,pdfminer、tabula、pdfplumber、camelot……查询资料表明,似乎普遍认为pdfminer的效果不怎么好,而tabula需要java支持 ,想偷懒于是只试了pdfplumber和...


(编辑:夔媛帖)
联系方式:
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图
@ 作文摘要网