美文网首页
Python 爬虫之Cookie

Python 爬虫之Cookie

作者: 42chaos | 来源:发表于2017-03-23 15:14 被阅读132次

    1.Cookie定义

    当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,都纪录下来。当下次你再光临同一个网站,WEB 服务器会先看看有没有它上次留下的 Cookie 资料,有的话,就会依据 Cookie里的内容来判断使用者,送出特定的网页内容给你。 Cookie 的使用很普遍,许多有提供个人化服务的网站,都是利用 Cookie来辨认使用者。

    2.Cookie机制

    正统的cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie。然而纯粹的客户端脚本如JavaScript或者VBScript也可以生成cookie。而cookie的使用是由浏览器按照一定的原则在后台自动发送给服务器的。浏览器检查所有存储的cookie,如果某个cookie所声明的作用范围大于等于将要请求的资源所在的位置,则把该cookie附在请求资源的HTTP请求头上发送给服务器。
    cookie的内容主要包括:名字,值,过期时间,路径和域。路径与域一起构成cookie的作用范围。若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种生命期为浏览器会话期的cookie被称为会话cookie。会话cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间

    3.Cookielib使用

    cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源。Cookielib模块非常强大,我们可以利用本模块的CookieJar类的对象来捕获cookie并在后续连接请求时重新发送,比如可以实现模拟登录功能。该模块主要的对象CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。
    它们的关系:CookieJar —-派生—->FileCookieJar —-派生—–>MozillaCookieJar和LWPCookieJar
    示例代码

    import urllib2
    import cookielib
    cookie = cookielib.CookieJar()
    processor=urllib2.HTTPCookieProcessor(cookie)
    opener = urllib2.build_opener(processor)
    response = opener.open('http://www.baidu.com')
    for item in cookie:
        print 'Name = '+item.name
        print 'Value = '+item.value
    

    运行结果如下

    Name = BAIDUID
    Value = 7581CB08339565545E3B081C00679E8B:FG=1
    Name = BIDUPSID
    Value = 7581CB08339565545E3B081C00679E8B
    Name = H_PS_PSSID
    Value = 1440_19036_21104_17001
    Name = PSTM
    Value = 1490239291
    Name = BDSVRTM
    Value = 0
    Name = BD_HOME
    Value = 0
    

    同样,可以把结果保存在本地文档中,代码如下

    import urllib2
    import cookielib
    
    filename = 'cookie.txt'
    
    cookie = cookielib.MozillaCookieJar(filename)
    
    processor=urllib2.HTTPCookieProcessor(cookie)
    
    opener = urllib2.build_opener(processor)
    
    response = opener.open('http://www.baidu.com')
    
    cookie.save(ignore_discard=True,ignore_expires=True)
    

    这样便在同文件下,获得cookie.txt

    cookie.txt.png

    相关文章

      网友评论

          本文标题:Python 爬虫之Cookie

          本文链接:https://www.haomeiwen.com/subject/kohznttx.html