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

引言

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

比如如下网站:

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

python爬虫读取pdf_python爬虫处理在线预览的pdf文档_第1张图片

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

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

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

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

python爬虫读取pdf_python爬虫处理在线预览的pdf文档_第2张图片

但是效果怎么样就不知道了,只能一个一个去试了,到后面我终于找到个库,非常符合我的需求的库 ——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 installed

原因就是,read_pdf默认的flavor参数是lattice,这个模式的话需要安装ghostscript库,然后你需要去下载Python的ghostscript包和ghostscript驱动(跟使用selenium需要下载浏览器驱动一个原理),而默认我们的电脑肯定是没有安装这个驱动的,所以就会报上面那个错。我试着去装了这个驱动和这个包,去read_pdf时其实感觉没有本质区别,是一样的,所以带上参数flavor='stream'即可,当然如果你硬要用lattice模式的话,安装完ghostscript包和ghostscript驱动之后,记得在当前py文件用 【import ghostscript】导入下这个包ÿ

你可能感兴趣的:(python爬虫读取pdf)