4 17080

python读取PDF内容

gz51837844 于 2016-5-12 23:18 发表 [复制链接]
1,引言

晚上翻看《Python网络数据采集》这本书,看到读取PDF内容的代码,想起来前几天集搜客刚刚发布了一个抓取网页pdf内容的抓取规则,这个规则能够把pdf内容当成html来做网页抓取。神奇之处要归功于Firefox解析PDF的能力,能够把pdf格式转换成html标签,比如,div之类的标签,从而用GooSeeker网页抓取软件像抓普通网页一样抓取结构化内容。

从而产生了一个问题:用Python爬虫的话,能做到什么程度。下面将讲述一个实验过程和源代码。

2,把pdf转换成文本的Python源代码

下面的python源代码,读取pdf文件内容(互联网上的或是本地的),转换成文本,打印出来。这段代码主要用了一个第三方库PDFMiner3K把PDF读成字符串,然后用StringIO转换成文件对象。(源代码下载地址参看文章末尾的GitHub源)

  1. from urllib.request import urlopen
  2. from pdfminer.pdfinterp import PDFResourceManager, process_pdf
  3. from pdfminer.converter import TextConverter
  4. from pdfminer.layout import LAParams
  5. from io import StringIO
  6. from io import open

  7. def readPDF(pdfFile):
  8.     rsrcmgr = PDFResourceManager()
  9.     retstr = StringIO()
  10.     laparams = LAParams()
  11.     device = TextConverter(rsrcmgr, retstr, laparams=laparams)

  12.     process_pdf(rsrcmgr, device, pdfFile)
  13.     device.close()

  14.     content = retstr.getvalue()
  15.     retstr.close()
  16.     return content

  17. pdfFile = urlopen("http://pythonscraping.com/pages/warandpeace/chapter1.pdf")
  18. outputString = readPDF(pdfFile)
  19. print(outputString)
  20. pdfFile.close()
复制代码
如果PDF文件在你的电脑里,那就把urlopen返回的对象pdfFile替换成普通的open()文件对象。

3,展望

这个实验只是把pdf转换成了文本,但是没有像开头所说的转换成html标签,那么在Python编程环境下是否有这个能力,留待今后探索。


4,集搜客GooSeeker开源代码下载源

1. GooSeeker开源Python网络爬虫GitHub源

5,文档修改历史

2016-05-26:V2.0,增补文字说明
2016-05-29:V2.1,增加第六章:源代码下载源,并更换github源的网址








举报 使用道具
| 回复

共 4 个关于本帖的回复 最后回复于 2017-6-28 13:49

白逸羽 新手上路 发表于 2016-7-5 15:00:08 | 显示全部楼层
需要安装第三方库PDFMiner3K
举报 使用道具
goodqdy 新手上路 发表于 2016-7-19 09:44:32 | 显示全部楼层
下载页里木有看到啊 能明示么
举报 使用道具
gz51837844 管理员 发表于 2016-7-19 11:06:59 | 显示全部楼层
goodqdy 发表于 2016-7-19 09:44
下载页里木有看到啊 能明示么

文章中的github源的地址已经更新了,你可以再点击试一下
举报 使用道具
yanqichristina 新手上路 发表于 2017-6-28 13:49:49 | 显示全部楼层
不好意思,请问这个可以用来读取中文吗? 我尝试了下,出现了ValueError: chr() arg not in range(256)的报错。可以麻烦您指教下么?
举报 使用道具
您需要登录后才可以回帖 登录 | 立即注册

精彩推荐

  • Gephi社会网络分析-马蜂窝游记文本分词并同
  • Gephi社会网络分析-基于马蜂窝游记文本以词
  • 知乎话题文本根据词语间距筛选后生成共词矩
  • 马蜂窝游记文本分词后以词语间距为筛选条件
  • 学习使用apriori算法挖掘关联关系

热门用户

GMT+8, 2024-3-29 06:12