1,引言晚上翻看《python网络数据采集》这本书,看到读取pdf内容的代码,想起来前几天集搜客刚刚发布了一个抓取网页pdf内容的抓取规则,这个规则能够把pdf内容当成html来做网页抓取。神奇之处要归功于firefox解析pdf的能力,能够把pdf格式转换成html标签,比如,p之类的标签,从而用gooseeker网页抓取软件像抓普通网页一样抓取结构化内容。从而产生了一个问题:用python爬虫的话,能做到什么程度。下面将讲述一个实验过程和源代码。
2,把pdf转换成文本的python源代码下面的python源代码,读取pdf文件内容(互联网上的或是本地的),转换成文本,打印出来。这段代码主要用了一个第三方库pdfminer3k把pdf读成字符串,然后用stringio转换成文件对象。(源代码下载地址参看文章末尾的github源)
from urllib.request import urlopen
from pdfminer.pdfinterp import pdfresourcemanager, process_pdf
from pdfminer.converter import textconverter
from pdfminer.layout import laparams
from io import stringio
from io import open
def readpdf(pdffile):
rsrcmgr = pdfresourcemanager()
retstr = stringio()
laparams = laparams()
device = textconverter(rsrcmgr, retstr, laparams=laparams)
process_pdf(rsrcmgr, device, pdffile)
device.close()
content = retstr.getvalue()
retstr.close()
return content
pdffile = urlopen(“http://pythonscraping.com/pages/warandpeace/chapter1.pdf”)
outputstring = readpdf(pdffile)
print(outputstring)
pdffile.close()
如果pdf文件在你的电脑里,那就把urlopen返回的对象pdffile替换成普通的open()文件对象。
3,展望这个实验只是把pdf转换成了文本,但是没有像开头所说的转换成html标签,那么在python编程环境下是否有这个能力,留待今后探索。