Python小记:cookiejar中的手动cookie管理

继上次通过phantomjs获取动态cookie后需要对同一网站搭建一个查询的接口,对于这种情况继续使用scrapy是肯定不现实的了,于是采用了urllib加上cookiejar的方式来进行实时查询接口的编写。

开始打算直接把动态生成的cookie直接带在header里面进行发送,但是由于本身传回cookie的存在,直接重写head会导致cookie不完整。于是采用在cookiejar中直接添加cookie字段,cookiejar的cookie添加十分繁琐,上代码

def getSession(e):
    print 'getSession'
    js = e.read()
    js = str(js).replace("", '')
    js = js.replace("document.cookie=dc", 'console.log(dc);phantom.exit()')
    f = open('getcookie.js', "w+")
    f.write(js)
    f.close()
    status, output = commands.getstatusoutput('phantomjs getcookie.js')
    cookiejar.set_cookie(make_cookie('__jsl_clearance', output.split(";")[0].split('=')[1]))

make_cookie函数的具体实现

def make_cookie(name, value):
    return cookielib.Cookie(
        version=0,
        name=name,
        value=value,
        port=None,
        port_specified=False,
        domain="court.gov.cn",
        domain_specified=True,
        domain_initial_dot=False,
        path="/",
        path_specified=True,
        secure=False,
        expires=None,
        discard=False,
        comment=None,
        comment_url=None,
        rest=None
    )

通过以上代码实现cookiejar的cookie的添加,直接通过字典添加cookie是不行的,cookiejar 中的cookie是以一个Cookie类型存在的,需要调用Cookie的构造函数生成的对应类型进行添加。

个人对于cookiejar不提供方便的添加cookie的方法表示非常不理解,不过管他呢,这里记一笔,以后注意

你可能感兴趣的:(Python小记:cookiejar中的手动cookie管理)