如何利用Python抓取PDF中的某些內容?
我現在有大約2000份公司的年報(英文),想從每份中抓取固定的內容(比如說TOTAL ASSET)。如果手動搜索然後複製粘貼進EXCEL太費事了。有沒有什麼辦法能自動化這個過程。 這些年報是PDF格式的
你的問題事實上包含幾部分:
- 將 PDF 轉化為純文本格式
- 抽取其中部分內容
- 格式化寫入到 excel 中
轉換 PDF 有很多庫可以完成,如下是通過 pdfminer 的示例:
from cStringIO import StringIO
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
def convert_pdf_2_text(path):
rsrcmgr = PDFResourceManager()
retstr = StringIO()
device = TextConverter(rsrcmgr, retstr, codec="utf-8", laparams=LAParams())
interpreter = PDFPageInterpreter(rsrcmgr, device)
with open(path, "rb") as fp:
for page in PDFPage.get_pages(fp, set()):
interpreter.process_page(page)
text = retstr.getvalue()
device.close()
retstr.close()
return text
方法很多,比如之前提到的pypdf。然而用起來其實稍顯麻煩,很多操作不夠方便。
所以我一般用pdf2htmlex(github上有,一個國人項目,非python)先把pdf轉html,接下來再用bs4來解析處理。好處是處理html的工具非常非常豐富,且pdf2htmlex對原頁面的效果保持得特別好,特別是對於那些個用word和latex導出的pdf里,大量數據圖表裡的標籤可以很方便地把值抓出來……
pdfminer 對表格不友好,推薦使用pdf2htmlex。
用pyPdf http://pybrary.net/pyPdf/教程的話谷歌百度一下一大堆 = =
推薦閱讀:
※pandas 怎麼根據一列的數據的值的情況判斷來生成另外一列的數值?
※如何批量獲取年報中數據?
※Python的大數運算到底是根據什麼基礎原理或者演算法實現的?
※將來 UWP 會不會支持 python?
※哪些簡單的linux或者python技能,能直接用在生活上讓周圍人刮目相看?