233
gooseeker集搜客
Python讀取PDF內容
1,引言
晚上翻看《Python網絡數據采集》這本書,看到讀取PDF內容的代碼,想起來前幾天集搜客剛剛發布了一個抓取網頁pdf內容的抓取規則,這個規則能夠把pdf內容當成html來做網頁抓取。神奇之處要歸功於Firefox解析PDF的能力,能夠把pdf格式轉換成html標簽,比如,div之類的標簽,從而用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("https://pythonscraping.com/pages/warandpeace/chapter1.pdf")
outputString = readPDF(pdfFile)
print(outputString)
pdfFile.close()
如果PDF文件在你的電腦裏,那就把urlopen返回的對象pdfFile替換成普通的open()文件對象。
3,展望
這個實驗隻是把pdf轉換成了文本,但是沒有像開頭所說的轉換成html標簽,那麼在Python編程環境下是否有這個能力,留待今後探索。
4,集搜客GooSeeker開源代碼下載源
- GooSeeker開源Python網絡爬蟲GitHub源
5,文檔修改曆史
- 2016-05-26:V2.0,增補文字說明
- 2016-05-29:V2.1,增加第六章:源代碼下載源,並更換github源的網址

最後更新:2017-01-09 14:08:08