使用Python批量下载PDF

时间:2016-12-16 17:38:00

标签: python python-2.7 url pdf batch-processing

我正在尝试使用Python批量下载PDF。手动下载文件的过程是:

  1. 打开https://www.ffiec.gov/nicpubweb/nicweb/HCSGreaterThan10B.aspx
  2. 点击列表中的任何银行。假设我选择第一个, JP Morgan
  3. 从顶部点击 创建报告 以查看 第四 报告(例如, 银行业组织系统风险报告(FR Y-15)
  4. 点击 您的财务报告请求已准备好
  5. 使用以下网址https://www.ffiec.gov/nicpubweb/NICDataCache/FRY15/FRY15_1039502_20160630.PDF
  6. 下载打开的PDF
  7. 对列表中的每个银行重复此过程
  8. 要下载JP Morgan的PDF,我的代码如下

    import urllib2
    
    url = 'https://www.ffiec.gov/nicpubweb/NICDataCache/FRY15/FRY15_1039502_20160630.PDF'
    res = urllib2.urlopen(url)
    with open('jpm.pdf', 'wb') as handle:
        handle.write(res.read())
    

    代码可以在我的机器上运行,但不适用于其他人的代码。我怀疑这与网址的 NICDataCache 部分有关。我去过这个网址,所以代码知道在哪里抓PDF;对于没有去过网站的人,如果他们打入上述网址,他们就会

      

    您要查找的资源已被删除,名称已更改或暂时不可用。

    我可以尝试让Python模拟上面的按钮点击然后下载打开的PDF但是想知道是否有更简单的方法来执行此操作 - 这种方式不需要我访问每个网址我想下载。感谢。

1 个答案:

答案 0 :(得分:1)

在银行列表中,请注意括号中的整数。

假设:该整数唯一地标识该银行。

这是为您创建缓存资源的URL:

https://www.ffiec.gov/nicpubweb/nicweb/FinancialReport.aspx?parID_RSSD={bank_id}&parDT=20160630&parRptType=FRY15

请注意网址中的{bank_id}。我把它放在那里。如果用银行列表中的任何包含在parens中的给定整数替换它,它将生成缓存资源。

然后,如果您访问此网址:https://www.ffiec.gov/nicpubweb/NICDataCache/FRY15/FRY15_{bank_id}_20160630.PDF

它将回复该银行的PDF。

基本上,您需要从第一页浏览银行列表,为您想要的每个银行生成缓存资源(通过使用第一个URL作为模板,注入银行编号),然后从中提取PDF第二个URL模板。