Python 2.7 如何在pdftkit/wkhtmltopdf中使用requests.cookies?

Python 2.7 如何在pdftkit/wkhtmltopdf中使用requests.cookies?,python-2.7,wkhtmltopdf,mediawiki-api,pdfkit,Python 2.7,Wkhtmltopdf,Mediawiki Api,Pdfkit,我喜欢使用pdfkit打印mediawikipage的pdf版本。 My mediawiki需要有效登录才能查看任何页面。 我使用请求登录到mediawiki,这很有效,我得到了一些cookie。但是,我无法将这些cookie与pdfkit.from_url() 我的python脚本如下所示: #!/usr/bin/env python2 import pdfkit import requests import pickle mywiki = "http://192.168.

我喜欢使用pdfkit打印mediawikipage的pdf版本。 My mediawiki需要有效登录才能查看任何页面。 我使用
请求
登录到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/>]>
此文件如下所示:

现在我想使用pdfkit将特定页面打印成PDF。Manpage声明,可以通过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?

我也遇到了同样的问题,并通过以下方法解决了这个问题:

import requests, pdfkit

# Get login cookie
s = requests.session()  # if you're making multiple calls
data = {'username': 'admin', 'password': 'hunter2'}
s.post('http://example.com/login', data=data)

# Get yourself a PDF
options = {'cookie': s.cookies.items(), 'javascript-delay': 1000}
pdfkit.from_url('http://example.com/report', 'report.pdf', options=options)
根据您试图加载多少javascript,您可能希望将
javascript延迟设置为更高或更低的值;默认值为200ms

import requests, pdfkit

# Get login cookie
s = requests.session()  # if you're making multiple calls
data = {'username': 'admin', 'password': 'hunter2'}
s.post('http://example.com/login', data=data)

# Get yourself a PDF
options = {'cookie': s.cookies.items(), 'javascript-delay': 1000}
pdfkit.from_url('http://example.com/report', 'report.pdf', options=options)