python 读取在线pdf文档_python爬虫处理在线预览的pdf文档

本文讲述了在爬取一个使用pdfjs展示内容的网站时,如何通过下载PDF并使用camelot库将其转换为HTML。文章详细介绍了处理过程中遇到的错误,如PDFReadError和SyntaxError,以及解决方案,包括删除PDF的NULL尾部、处理编码问题和源码修改。最后,作者分享了如何判断PDF是否为图片并相应地处理表格和图片。
摘要由CSDN通过智能技术生成

引言

最近在爬一个网站,然后爬到详情页的时候发现,目标内容是用pdf在线预览的

比如如下网站:

https://camelot-py.readthedocs.io/en/master/_static/pdf/foo.pdf

根据我的分析发现,这样的在线预览pdf的采用了pdfjs加载预览,用爬虫的方法根本无法直接拿到pdf内的内容的,对的,你注意到了我说的【根本无法直接拿到】中的直接两个字,确实直接无法拿到,怎么办呢?只能把pdf先下载到本地,然后用工具转了,经过我查阅大量的相关资料发现,工具还是有很多:

1.借用第三方的pdf转换网站转出来

2.使用Python的包来转:如:pyPdf,pyPdf2,pyPdf4,pdfrw等工具

这些工具在pypi社区一搜一大把:

但是效果怎么样就不知道了,只能一个一个去试了,到后面我终于找到个库,非常符合我的需求的库 ——camelot

camelot可以读取pdf文件中的数据,并且自动转换成pandas库(数据分析相关)里的DataFrame类型,然后可以通过DataFrame转为csv,json,html都行,我的目标要的就是转为html格式,好,废话不多说,开始搞

开始解析

1.安装camelot:

pip install camelot-py

pip install cv2  (因为camelot需要用到这个库)

2.下载pdf:因为在线的pdf其实就是二进制流,所以得按照下载图片和视频的方式下载,然后存到本地的一个文件里,这个步骤就不多说了

3.解析:

importcamelot

file= ‘temp.pdf‘table= camelot.read_pdf(file,flavor=‘stream‘)

table[0].df.to_html(‘temp.html‘)

以上的temp.html就是我希望得到的数据了,然后根据我的分析发现,在read_pdf方法里一定带上参数  【flavor=‘stream‘】,不然的话就报这个错:

RuntimeError: Please make sure that Ghostscript is installe

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值