selenium.webdriver.get_cookies()给了我两个值/对的词典。我假设这些词典中的每一个都是一个cookie。如何将这些cookie写入一个文本文件,该文件将使用以下代码将cookie从cookie.txt文件加载到卷曲会话?
p = pycurl.Curl()
cookiefile = open('cookie.txt', 'r')
p.setopt(pycurl.URL, my_url)
p.setopt(pycurl.COOKIEFILE, cookiefile)
p.perform()
有没有更好的方法将Cookie从selenium会话转移到卷曲会话以进行文件下载?我看到关于使用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开头:第二个字典的名称和值后面跟着括号中的附加属性?
答案 0 :(得分:0)
自问这个问题后我发现的所有内容都指向了这个问题的答案:https://unix.stackexchange.com/questions/36531/format-of-cookies-when-using-wget,也是我问题的答案(https://curl.haxx.se/docs/http-cookies.html说curl使用netscape cookie格式)。
答案 1 :(得分:0)
我使用的是请求,而不是pycurl,但我认为这会对您有所帮助。
cookies_list = driver.get_cookies()
cookies_dict = []
for cookie in cookies_list:
cookies_dict.append([cookie['name'],cookie['value']])
cookies_dict = dict(cookies_dict)
和
requests.get(URL, cookies=cookies_dict)
这将起作用。