Python讀取PDF內容

  • 2020 年 1 月 10 日
  • 筆記

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("http://pythonscraping.com/pages/warandpeace/chapter1.pdf")  outputString = readPDF(pdfFile)  print(outputString)  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源的網址