使用python(robobrowser)下载图像和pdf

时间:2015-02-17 10:42:52

标签: python robobrowser

我正在使用robobrowser登录受密码保护的网站。我可以下载HTML代码并进行编辑。但是,当我使用以下方法时:

br = RoboBrowser(history=True)
url = 'https://dummywebsite.html/dummy.pdf'
br.open(url)
pdf_file = '/localdir/local.pdf'
with open(pdf_file, 'wb') as output:
    output.write("%s" % (br.parsed))

但是,输出不是有效的pdf文件。当我尝试下载图像时也是如此。我已经阅读了文档,但还没有找到任何内容。替代方案似乎是机械化。但是,没有python 3支持。

我很感激帮助或指点前瞻。此外,任何其他替代方案,如果robobrowser无法处理这将是很大的帮助。

2 个答案:

答案 0 :(得分:2)

您可以尝试使用RoboBrowser也可用的requests.session对象:

url = "https://dummywebsite.html/dummy.pdf"
pdf_file_path = "/localdir/local.pdf"

browser = RoboBrowser(history=True)
# do the login (e.g. via a login form)
request = browser.session.get(url, stream=True)

with open(pdf_file_path, "wb") as pdf_file:
    pdf_file.write(request.content)

此方法还允许您访问仅在您登录后可用的文件(此信息通常存储在HTTP会话中)。

答案 1 :(得分:1)

您必须将返回页面(PDF)的全部内容放入文件中。 这段代码应该有效:

br = RoboBrowser(history=True)
url = 'https://dummywebsite.html/dummy.pdf'
br.open(url)
pdf_file = '/localdir/local.pdf'

content = br.response.content

with open(pdf_file, "wb") as output:
  output.write(content)