Python 报错:“’cookies.txt’ does not look like a Set-Cookie3 (LWP) format file”和“invalid Netscape format cookies”

如果遇到
http.cookiejar.LoadError: ‘cookies.txt’ does not look like a Set-Cookie3 (LWP) format file

http.cookiejar.LoadError: ‘cookie.txt’ does not look like a Netscape format cookies file
的问题,

那么,原因是cookies.txt文件的内容格式不对!

不知道怎么修改,怎么办呢?
办法:把 CookieJar自己cookie.save()保存下来的文件,用notepad打开来看看,就知道格式了

 

例如:报错: http.cookiejar.LoadError: ‘cookie.txt’ does not look like a Netscape format cookies file

那么问题出在cookies文件上,说是不像一个Netscape格式的cookie文件。不过也好解决,只需要在cookies文件开始一行添加如下内容即可:

# Netscape HTTP Cookie File

 

例如:报错:http.cookiejar.LoadError: ‘cookies.txt’ does not look like a Set-Cookie3 (LWP) format file

应该是使用了类似以下的语句:

# session代表某一次连接
mySession = requests.session()
# 因为原始的session.cookies 没有save()方法,所以需要用到cookielib中的方法LWPCookieJar,这个类实例化的cookie对象,就可以直接调用save方法。
mySession.cookies = cookielib.LWPCookieJar(filename = "cookies.txt")

那么问题也出在cookies文件上,只需要在cookies文件开始一行添加如下内容即可:

#LWP-Cookies-2.0

 

附上保存两种格式cookies.txt文件的代码:

import cookielib
import urllib2

def cookies():
    """保存cookies到变量
    """
    #声明一个CookieJar对象实例来保存cookie
    cookie = cookielib.CookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
    #此处的open方法同urllib2的urlopen方法,也可以传入request
    response = opener.open('http://example.webscraping.com')
    for item in cookie:
        print ('Name = '+item.name)
        print ('Value = '+item.value)

def save_cookies_Moz():
    """保存cookies到文件 —— Netscape格式
    """
    filename = 'cookies_Moz.txt'
    cookie = cookielib.MozillaCookieJar(filename)
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
    response = opener.open("http://example.webscraping.com")
    cookie.save(ignore_discard=True, ignore_expires=True)       # 这里必须将参数置为True,否则写入文件失败

def save_cookies_LWP():
    """保存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)       # 这里必须将参数置为True,否则写入文件失败

 

 

 

参考:

Python 网络爬虫:利用requests模拟登录实例讲解, 手把手教你利用session/cookie模拟登录

 

本文:Python 报错:“’cookies.txt’ does not look like a Set-Cookie3 (LWP) format file”和“invalid Netscape format cookies”

Leave a Reply