我正在使用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无法处理这将是很大的帮助。
答案 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)