我正在尝试使用wkhtmltopdf
将受密码保护的页面打印为PDF,但我无法加载(工作)Cookie,这意味着我总是只打印“登录”页面。
以下代码按预期工作:如果我登录,我可以查看正确的页面,无论是从cookie加载还是输入我的登录信息:
class PrintPages(object):
def __init__(self):
...
self.browser = mechanize.Browser()
self.cj = mechanize.MozillaCookieJar()
self.browser.set_cookiejar(self.cj)
self.login("cookies.txt")
def login(self, cookie_jar):
""" Log in, save cookie if doesn't exist. Otherwise, load cookie. """
if os.path.isfile(cookie_jar):
self.cj.load(cookie_jar, ignore_discard=True, ignore_expires=True)
else:
self.browser.open(self.login_url)
self.browser.select_form(name="loginform")
self.browser["username"] = self.username
self.browser["password"] = getpass.getpass()
self.browser.submit()
self.cj.save(cookie_jar, ignore_discard=True, ignore_expires=True)
# Netscape HTTP Cookie File
# http://www.netscape.com/newsref/std/cookie_spec.html
# This is a generated file! Do not edit.
sub.example.com FALSE / TRUE JSESSIONID B8307A77925DB287B0346C728BBF8F24
但是,告诉wget
或wkhtmltopdf
加载Cookie会为我提供登录页面。
$ wget -p --load-cookies cookies.txt sub.example.com/page.html
$ wkhtmltopdf --cookie-jar cookies.txt sub.example.com/page.html page.pdf
是什么给出的?理想情况下,任何允许我打印到PDF的解决方案都是理想的,但我很好奇这里发生了什么。
我正在使用:
wkhtmltopdf
版本0.9.9 mechanize
:版本0.2.5 答案 0 :(得分:3)
我没有针对您的特定Cookie问题的解决方案,但我们使用权限打印pdf所做的工作是:
我们正在寻找一种更好的方法,但到目前为止它对我们有用。
希望这有帮助。