我使用Tabula-py通过URL列表从PDF下载和提取表。URL是基于规则创建的,一切都很正常,除非Tabula试图从没有页面/文件的链接中处理PDF (特别是周末,因为PDF不在周末发布)。
下面是完整的Python脚本。
我希望脚本跳过它会出现的任何错误(特别是当尝试从基于周末的URL中提取)并继续处理。
有什么想法吗?
import datetime
import pickle
import pandas
import tabula
# create text file
df=open('urls.txt','w')
# Example list
start = datetime.datetime(2022, 11, 1)
end = datetime.datetime(2022, 11, 11)
delta = datetime.timedelta(days=1)
pdf_path='https://www.irishprisons.ie/wp-content/uploads/documents_pdf/{date1:%d-%B-%Y}.pdf'
while start < end:
date1 = start
date2 = start + delta
url = pdf_path.format(date1=date1, date2=date2)
# Save list and stop loop
df.write(url)
start = date2
# Extract Table from PDF availible from url
path = url
# Make the most recent
#path = "https://www.irishprisons.ie/wp-content/uploads/documents_pdf/11-November-2022.pdf"
dfs = tabula.read_pdf(path, pages='1', lattice=True, stream=True, pandas_options={'header':None})
try:
new_header = dfs[0].iloc[1]
inmate_count = dfs[0].drop(labels=0, axis=0)
inmate_count.columns = [new_header]
inmate_count=inmate_count.dropna(how='all').reset_index(drop=True)
inmate_count = inmate_count.drop(labels=[0], axis=0)
inmate_count['url'] = path
inmate_count.to_csv("first_table.csv", mode='a', header=False, index=False)
print(inmate_count)
except Exception:
pass
print("Finished")我试过了,但我不熟悉尝试/异常,但这似乎什么也做不了。
发布于 2022-11-13 15:03:57
您可以为每个独立的函数编写单独的try/catches,以便其他函数继续:
try:
foo = func1()
foo.func2()
except Exception:
print("this failed")
try:
mom = func3()
except Exception:
print("this failed")
try:
func4()
except Exception:
print("this failed")https://stackoverflow.com/questions/74422033
复制相似问题