【发布时间】:2017-06-16 13:48:14
【问题描述】:
我喜欢使用 pdfkit 打印我的 mediawikipage 的 pdf 版本。
我的 mediawiki 需要有效登录才能查看任何页面。
我使用requests 登录到 mediawiki,这很有效,我得到了一些 cookie。但是,我无法将这些 cookie 与 pdfkit.from_url() 一起使用
我的 python 脚本如下所示:
#!/usr/bin/env python2
import pdfkit
import requests
import pickle
mywiki = "http://192.168.0.4/produniswiki/"# URL
username = 'produnis' # Username to login with
password = 'seeeecret#' # Login Password
## Login to MediaWiki
# Login request
payload = {'action': 'query', 'format': 'json', 'utf8': '', 'meta': 'tokens', 'type': 'login'}
r1 = requests.post(mywiki + 'api.php', data=payload)
# login confirm
login_token = r1.json()['query']['tokens']['logintoken']
payload = {'action': 'login', 'format': 'json', 'utf8': '', 'lgname': username, 'lgpassword': password, 'lgtoken': login_token}
r2 = requests.post(mywiki + 'api.php', data=payload, cookies=r1.cookies)
print(r2.cookies)
所以,到这里我就成功登录了,并且cookies存储在r2.cookies中。 print() 命令给出:
<RequestsCookieJar[<Cookie produniswikiToken=832a1f1da165016fb9d9a107ddb218fc for 192.168.0.4/>, <Cookie produniswikiUserID=1 for 192.168.0.4/>, <Cookie produniswikiUserName=Produnis for 192.168.0.4/>, <Cookie produniswiki_session=oddicobpi1d5af4n0qs71g7dg1kklmbo for 192.168.0.4/>]>
我可以将 cookie 保存到文件中:
def save_cookies(requests_cookiejar, filename):
with open(filename, 'wb') as f:
pickle.dump(requests_cookiejar, f)
save_cookies(r2.cookies, "cookies")
此文件如下所示:http://pastebin.com/yKyCpPTW
现在我想使用 pdfkit 将特定页面打印成 PDF。手册页指出,可以通过 cookie-jar 文件设置 cookie:
options = {
'page-size': 'A4',
'margin-top': '0.5in',
'margin-right': '0.5in',
'margin-bottom': '0.5in',
'margin-left': '0.5in',
'encoding': "UTF-8",
'cookie-jar' : "cookies",
'no-outline': None
}
current_pdf = pdfkit.from_url(pdf_url, the_filename, options=options)
我的问题是: 使用此代码,“cookies”文件变为 0KB,PDF 声明“您必须登录才能查看页面...”
所以我的问题是:
如何在 pdfkit.from_url() 中使用 requests.cookies?
【问题讨论】:
标签: python-2.7 wkhtmltopdf mediawiki-api pdfkit