点击“提交”后如何获取下载的pdf文件这也将我重定向到新的页面

时间:2014-12-20 01:10:21

标签: python python-2.7 web-scraping mechanize python-requests

我正在使用mechanize从网页自动下载一些pdf文档。当页面上有pdf图标时,我可以这样做以获取文件:

    b.find_link(text="PDF download")
    req = b.click_link(text="PDF download")
    b.open(req)

然后我将它写入一个新文件。

但是,对于我需要的一些文档,页面上没有直接的“PDF下载”链接。相反,我必须单击“提交”按钮为文档发出“交付请求”:单击此按钮后,下载开始发生,同时我被带到另一个页面,其中显示“正在进行交付请求”,然后,下载已完成,“您的送货请求已完成”。

我尝试使用mechanize单击提交按钮,然后通过执行以下操作保存下载的文件:

b.select_form(nr=0)
b.submit()
downloaded_file = b.response().read()

但是这会存储我重定向到的页面的html,而不是下载的文件。

点击“提交”后如何获取下载的文件?

1 个答案:

答案 0 :(得分:0)

对于有类似问题的任何人,我找到了一个解决方法:mechanize模拟一个没有JavaScript的浏览器,所以我也在我的浏览器上关闭了,然后当我进入下载页面时,我可以看到一个链接说'如果下载尚未开始,请点击此处下载'。然后我可以通过机械化找到该链接并以正常方式跟踪它 - 并将响应写入新文件。