【发布时间】:2016-09-30 06:42:36
【问题描述】:
selenium.webdriver.get_cookies() 给了我两个值/对的字典。我假设这些字典中的每一个都是一个 cookie。如何将这些 cookie 写入文本文件,该文件将使用以下代码将 cookie 从 cookie.txt 文件加载到 curl 会话?
p = pycurl.Curl()
cookiefile = open('cookie.txt', 'r')
p.setopt(pycurl.URL, my_url)
p.setopt(pycurl.COOKIEFILE, cookiefile)
p.perform()
有没有更好的方法将 cookie 从 selenium 会话传输到 curl 会话以进行文件下载?看到了关于使用pickle的帖子,但是在上面的代码中使用pickle.dump()产生的文件作为cookiefile会导致如下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: invalid arguments to setopt
我认为这是因为该文件只是 python 字典的二进制转储,而不是格式正确的文本文件。如何将这两个字典写入 pycurl 可以读取和使用的文本文件?我在 RFC6265 中找到了一些信息:
每个 cookie 都以名称-值-对开头,后跟零个或多个 属性值对。
来自 selenium.webdriver.get_cookies() 的每个字典都有一个 name 和 value 属性以及其他属性。如何将这些格式化为格式正确的 cookie.txt 文件?我不确定 RFC6265 中的语法描述:
set-cookie-header = "Set-Cookie:" SP set-cookie-string
set-cookie-string = cookie-pair *( ";" SP cookie-av )
cookie-pair = cookie-name "=" cookie-value
...
path-av = "Path=" path-value
所以开始吧
Set Cookie: ASP.NET_SessionId=4jqhjdiq9k12ry45ahqtux3e (path=/; secure=False; httpOnly=True; domain=www.domain.com)
然后是另一行,以 Set Cookie: 开头,第二个字典的名称和值后跟括号中的附加属性?
【问题讨论】:
标签: python selenium curl cookies