python - 单击 'submit' 时如何获取下载的 pdf 文件,这也会将我重定向到新页面

标签 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,而不是下载的文件。

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

最佳答案

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

关于python - 单击 'submit' 时如何获取下载的 pdf 文件,这也会将我重定向到新页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27576010/

相关文章:

python - 如何将两个列表的元素添加到一个列表中?

python - 如何识别图像中具有相似强度的附近像素?

python - 为什么在 Django 中使用命名空间 url 是一个好习惯?

python - 如何传递列表元素作为引用?

python - 如何忽略 Selenium 中的异常?

javascript - Python - 如何抓取多个动态更新的表单/网页?

python - 确定图像中形状的轮廓

python-2.7 - elasticsearch异常SerializationError

python-2.7 - 在类的一个函数中获取用户输入并在 Python 中的另一个函数中使用它

python - 跳过无数据网页的条件