python 导入cookie格式的问题

 self.cookies_path=os.getcwd()+'/cookies.text'
 load_cookiejar = cookielib.LWPCookieJar()
        load_cookiejar.load(self.cookies_path, ignore_discard=True, ignore_expires=True)
        load_cookies = requests.utils.dict_from_cookiejar(load_cookiejar)
        self.s.cookies=requests.utils.cookiejar_from_dict(load_cookies)
        

cookie文件如下

[
{
    "domain": ".a.weixin.qq.com",
    "expirationDate": 1519770087,
    "hostOnly": false,
    "httpOnly": false,
    "name": "ADUSER_OPEN_ID",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "oQiT2txobu98sxd0xwB8CYtWRUFo",
    "id": 1
},
{
    "domain": ".a.weixin.qq.com",
    "expirationDate": 1519770087,
    "hostOnly": false,
    "httpOnly": false,
    "name": "agency_id",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "spid1953d833be",
    "id": 2
},
{
    "domain": ".a.weixin.qq.com",
    "expirationDate": 1519770087,
    "hostOnly": false,
    "httpOnly": false,
    "name": "data_bizuin",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "140919",
    "id": 3
},
{
    "domain": ".a.weixin.qq.com",
    "expirationDate": 1519770087,
    "hostOnly": false,
    "httpOnly": false,
    "name": "data_ticket",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "gym//VBWwi0wfjspSrG8S9Qb",
    "id": 4
},
{
    "domain": ".a.weixin.qq.com",
    "expirationDate": 1519770087,
    "hostOnly": false,
    "httpOnly": false,
    "name": "headimgurl",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "http://thirdwx.qlogo.cn/mmopen/vi_32/Q3auHgzwzM7hfuYIdDL26s1zViceg9Sl8CP21KWFUPVYbv4JLWelYPiaduxG4icB4cyXQq16PwPAvFnBhVlxbeWzQ/132",
    "id": 5
},
{
    "domain": ".a.weixin.qq.com",
    "expirationDate": 1519770087,
    "hostOnly": false,
    "httpOnly": false,
    "name": "MMAD_TICKET",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "bv04ozf5JDBVbB9wLwwlvTujl7E5i2YKig6UZR6o6ZrmjjI2IG+1SPdNC3ZG5SMzhfLNVNhIUj4=",
    "id": 6
},
{
    "domain": ".a.weixin.qq.com",
    "expirationDate": 1519770087,
    "hostOnly": false,
    "httpOnly": false,
    "name": "nick_name",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "%E9%A3%9E%E9%9B%AA%E8%BF%9E%E5%A4%A9",
    "id": 7
},
{
    "domain": ".a.weixin.qq.com",
    "expirationDate": 1519770087,
    "hostOnly": false,
    "httpOnly": false,
    "name": "nickname",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "",
    "id": 8
},
{
    "domain": ".qq.com",
    "expirationDate": 2147385600,
    "hostOnly": false,
    "httpOnly": false,
    "name": "o_cookie",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "873987836",
    "id": 9
},
{
    "domain": ".qq.com",
    "expirationDate": 1831572651.953761,
    "hostOnly": false,
    "httpOnly": false,
    "name": "pac_uid",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "1_873987836",
    "id": 10
},
{
    "domain": ".qq.com",
    "hostOnly": false,
    "httpOnly": false,
    "name": "pgv_info",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": true,
    "storeId": "0",
    "value": "ssid=s5616949070",
    "id": 11
},
{
    "domain": ".qq.com",
    "expirationDate": 2147385600,
    "hostOnly": false,
    "httpOnly": false,
    "name": "pgv_pvi",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "2274925568",
    "id": 12
},
{
    "domain": ".qq.com",
    "expirationDate": 2147385600,
    "hostOnly": false,
    "httpOnly": false,
    "name": "pgv_pvid",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "4705218032",
    "id": 13
},
{
    "domain": ".qq.com",
    "hostOnly": false,
    "httpOnly": false,
    "name": "pgv_si",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": true,
    "storeId": "0",
    "value": "s4369482752",
    "id": 14
},
{
    "domain": ".qq.com",
    "expirationDate": 2147483647.844381,
    "hostOnly": false,
    "httpOnly": false,
    "name": "pt2gguin",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "o0873987836",
    "id": 15
},
{
    "domain": ".qq.com",
    "expirationDate": 2147483648.683,
    "hostOnly": false,
    "httpOnly": false,
    "name": "ptcz",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "cbc87e66473cf2948090147ba4e7cf5852f011e7f80502e7d1af2b3a885f6b59",
    "id": 16
},
{
    "domain": ".qq.com",
    "hostOnly": false,
    "httpOnly": false,
    "name": "qqmusic_fromtag",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": true,
    "storeId": "0",
    "value": "",
    "id": 17
},
{
    "domain": ".qq.com",
    "hostOnly": false,
    "httpOnly": false,
    "name": "qqmusic_key",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": true,
    "storeId": "0",
    "value": "",
    "id": 18
},
{
    "domain": ".qq.com",
    "hostOnly": false,
    "httpOnly": false,
    "name": "qqmusic_uin",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": true,
    "storeId": "0",
    "value": "",
    "id": 19
},
{
    "domain": ".qq.com",
    "expirationDate": 2147483656.36283,
    "hostOnly": false,
    "httpOnly": false,
    "name": "RK",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "NVI1ao3BcZ",
    "id": 20
},
{
    "domain": ".qq.com",
    "hostOnly": false,
    "httpOnly": false,
    "name": "skey",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": true,
    "storeId": "0",
    "value": "@7fOp71lAL",
    "id": 21
},
{
    "domain": ".qq.com",
    "expirationDate": 1834123424,
    "hostOnly": false,
    "httpOnly": false,
    "name": "tvfe_boss_uuid",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "01dd18e500423787",
    "id": 22
},
{
    "domain": ".qq.com",
    "hostOnly": false,
    "httpOnly": false,
    "name": "uin",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": true,
    "storeId": "0",
    "value": "o0873987836",
    "id": 23
}
]
    

    

Traceback (most recent call last):
File "MP.py", line 39, in <module>

mp.log_in()

File "MP.py", line 26, in log_in

load_cookiejar.load(self.cookies_path, ignore_discard=True, ignore_expires=True)

File "/usr/lib/python2.7/cookielib.py", line 1779, in load

self._really_load(f, filename, ignore_discard, ignore_expires)

File "/usr/lib/python2.7/_LWPCookieJar.py", line 98, in _really_load

raise LoadError(msg)

cookielib.LoadError: '/home/stephen/PycharmProjects/Wechat_MP/cookies.text' does not look like a Set-Cookie3 (LWP) format file

阅读 6.4k
2 个回答

你的cookie文件有问题,看样子你是用了Chrome EditThisCookie 这个插件?
导出cookie的时候,插件默认是json格式,需要把它改成LWP:Perl格式才行。
clipboard.png

标准的 Set-Cookies3 格式如下:

// Semicolon separated Cookie File
// This file was generated by EditThisCookie
// Details: http://www.cookiecentral.com/faq/#3.5
// Example: http://www.tutorialspoint.com/javascript/javascript_cookies.htm
// URL: https://segmentfault.com/q/1010000013426257
Set-Cookie3: _ga=GA1.2.1747822062.1519069386; path="/"; domain=.segmentfault.com; path_spec; expires="1582838034"; version=0
Set-Cookie3: _gid=GA1.2.1140460524.1519670333; path="/"; domain=.segmentfault.com; path_spec; expires="1519852434"; version=0
Set-Cookie3: afpCT=1; path="/"; domain=.segmentfault.com; path_spec; expires="1519769616"; version=0

具体cookielib是怎么运作的,可以参考一下源代码。

修改:
试试这个代码呢,可以尝试用cookielib抓取某个网站的cookie和你的文件做一下格式上的对比。
我用了python2.7.14, 运行无碍。

# -*- coding: utf-8 -*-
import cookielib
import urllib2

def save_cookies_LWP():    
    filename = 'cookies_LWP.txt'
    cookie = cookielib.LWPCookieJar(filename)
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
    response = opener.open("http://example.webscraping.com")
    cookie.save(ignore_discard=True, ignore_expires=True)

save_cookies_LWP()

cookies_path = './cookies_LWP.txt'
load_cookiejar = cookielib.LWPCookieJar(cookies_path)
load_cookiejar.load()

抓取到的LWP格式的cookie文本内容如下:

#LWP-Cookies-2.0
Set-Cookie3: session_data_places="\"2a114e7184c63428656b257f79b6021f:Ki6ay7ZhMIym9RoBvCMdiygjJkaKZOWbw8fWfKidfrWsrY8skd3837uUpNnbckadaVU00KxufrwCIcSfr9oCZYusTLXIbzVvfq9oJmTMKQCaaH8WRqA9fwUDKTgSK0EVOXX6DyOpxGxK2oQ8D4xHAfsVVst7ol3QwAT0Jsd_9FqIuhuuMUt1TL755EoZGYWt\""; path="/"; domain="example.webscraping.com"; path_spec; discard; version=0
Set-Cookie3: session_id_places=True; path="/"; domain="example.webscraping.com"; path_spec; discard; httponly=None; version=0

针对此问题的解答

cookies_json.txt 内容如下:

"""

[
    {"domain": ".a.weixin.qq.com",
    "expirationDate": 1519770087,
    "hostOnly": false,
    "httpOnly": false,
    "name": "ADUSER_OPEN_ID",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "oQiT2txobu98sxd0xwB8CYtWRUFo",
    "id": 1}
]
"""
cookies_json_path = './cookies_json.txt'
cookies_results = []
with open(cookies_json_path, 'r') as cookie_file:
    cookies_list = json.loads(
        cookie_file.read()
    )

    for c in cookies_list:
        cookies_results.append(c)
             
print cookies_results

# 结果如下
"""
[{u'domain': u'.a.weixin.qq.com', u'name': u'ADUSER_OPEN_ID', u'storeId': u'0', u'value': u'oQiT2txobu98sxd0xwB8CYtWRUFo', u'session': False, u'hostOnly': False, u'expirationDate': 1519770087, u'sameSite': u'no_restriction', u'path': u'/', u'id': 1, u'httpOnly': False, u'secure': False}]
"""

我改成你说的LWP:perl 格式了,但是还是报同样的错误,难道我导入有问题?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题