PDFのテーブルからパンダデータフレームにデータを読み込もうとしています。PDFの表の周りにアウトラインがある場合、tabula-pyを使用してこれを行うことができますが、アウトラインなしでPDFを試すと、スクリプトでエラーが発生します。
たとえば、2 つの異なる URL から入手できる PDF を見ています。URLからpdfをダウンロードし、それぞれ「JSE Opts.pdf」および「JSE Divs.pdf」として保存しました。
import requests
import pandas as pd
url='https://clientportal.jse.co.za/JSE%20Equity%20Derivatives/Dividends/ED_DividendsReport.pdf'
response = requests.get(url)
fname = 'JSE Divs.pdf'
f= open(fname, 'wb')
f.write(response.content)
f.close()
url='https://clientportal.jse.co.za/JSE%20Equity%20Derivatives/Options%20Daily%20Traded%20Report/ED_OptionsDailyTradedReport.pdf'
response = requests.get(url)
fname = 'JSE Opts.pdf'
f= open(fname, 'wb')
f.write(response.content)
f.close()
次のコードを使用して、「JSE Opts.pdf」を pandas データフレームに読み込むことができます。
import tabula as tb
pdf = './JSE Opts.pdf'
data = tb.read_pdf(pdf,pages = 1)
data = data[0]
print(data)
「JSE Divs.pdf」に対して同じことをしようとすると、エラーが発生し、tabula-py はヘッダーしか読み取ることができません。
pdf = './JSE Divs.pdf'
data = tb.read_pdf(pdf,pages = 1)
data = data[0]
print(data)
これは、テーブルの周りに線がないためだと思います。その場合、「JSE Divs.pdf」からパンダにデータを読み込む最良の方法は何ですか?