什么是 cookie :

指某些网站为了辨别用户身份,进行 session 跟踪而储存在用户本地终端上的数据,通常以 txt 文件形式存储。比如你登录了淘宝,浏览器就会
保存 cookie 信息,这样我们浏览淘宝的其他商家页面就不需要再重新登录了;如果没有保存 cookie 信息,你每切换到另一个页面都要登录一次。

cookielib 一般用于客户端处理 HTTP cookie 信息,通过它可以从服务器端获取 cookie 信息,反过来又可以通过它将获取到的 cookie 发送给服务器

如何获取 cookie :

#!/usr/bin/env python
#-*- coding:utf-8 -*- import urllib2
import cookielib url = 'http://www.baidu.com/'
cookies = cookielib.CookieJar() # CookieJar()方法用于收集cookie信息,只有当我们访问一个URL的时候才会有cookie信息,目前只是创建一个cookie对象,里面是没有值的
handler = urllib2.HTTPCookieProcessor(cookies) # 使用 urllib2 的 HTTPCookieProcessor() 方法,创建一个 cookie 处理器,对收集到的 cookie 进行处理
opener = urllib2.build_opener(handler) # 使用 urllib2 的 build_opener() 方法,创建一个 opener 实例,该实例用于处理给定的URL链接
response = opener.open(url) # opener.open(url) 相当于 urllib2.urlopen(url),打开链接之后,上面定义的 cookies 就有值了 for cookie in cookies:
print "%s: %s" % (cookie.name, cookie.value)
[root@localhost ~]$ python 1.py
BAIDUID: 006F1423AFEFD18A005B7C77DF41CF12:FG=1
BIDUPSID: 006F1423AFEFD18A005B7C77DF41CF12
H_PS_PSSID: 1431_21104_18560_26350_22157
PSTM: 1550233508
delPer: 0
BDSVRTM: 0
BD_HOME: 0

爬虫中的用法:

#!/usr/bin/env python
#-*- coding:utf-8 -*- import re
import sys
import urllib
import urllib2
import cookielib class AdminSite(object): def __init__(self):
self.login_url = 'http://www.xxxx.com:8899/accounts/login/' # 登录页面的URL
self.request_url = 'http://www.xxxx.com:8899/yunwei/index/' # 要爬取的页面的URL
self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36'} def getPage(self):
cookie = cookielib.CookieJar()
handler = urllib2.HTTPCookieProcessor(cookie)
self.opener = urllib2.build_opener(handler) try:
request = urllib2.Request(url=self.request_url, headers=self.headers)
response = self.opener.open(request)
return response.read()
except urllib2.URLError, e:
if hasattr(e, 'code'):
print '连接服务器失败,错误代码:%s' % e.code
if hasattr(e, 'reason'):
print '连接服务器失败,失败原因:%s' % e.reason
else:
print '连接服务器失败,失败原因:%s' % e
sys.exit(1) def getToken(self):
page = self.getPage()
regular = re.compile(r"<form.*?<input.*?value='(.*?)'.*?>", re.S)
token = regular.search(page)
if token:
return token.group(1)
else:
return None def login(self):
form_data = {'csrfmiddlewaretoken': self.getToken(),
'username': 'xxxxxx',
'password': 'xxxxxx',
'next': '/yunwei/index/'}
self.post_data = urllib.urlencode(form_data)
try:
request = urllib2.Request(url=self.login_url, data=self.post_data, headers=self.headers)
response = self.opener.open(request)
print response.read()
return response.read()
except urllib2.URLError, e:
if hasattr(e, 'code'):
print '连接服务器失败,错误代码:%s' % e.code
if hasattr(e, 'reason'):
print '连接服务器失败,失败原因:%s' % e.reason
else:
print '连接服务器失败,失败原因:%s' % e
sys.exit(1) if __name__ == '__main__':
obj = AdminSite()
obj.login()

Python cookielib 模块的更多相关文章

  1. python—cookielib模块对cookies的操作

    最近用python写爬虫爬了点数据,确实是很好用的东西,今天对python如何操作cookie进行一下总结. python内置有cookielib模块操作cookie,配合urllib模块就可以了很轻 ...

  2. cookielib模块基础学习

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' import cookielib #主要用于处理http客户端的co ...

  3. 【转】cookielib模块

    cookielib模块 cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源.例如可以利用本模块 的CookieJar类的对象来 ...

  4. urllib2模块、cookielib模块

    urllib2模块 urllib模块和urllib模块类似,用来打开URL并从中获取数据.与urllib模块不同的是,urllib模块不仅可以使用urlopen() 函数还可以自定义Opener来访问 ...

  5. Python标准模块--threading

    1 模块简介 threading模块在Python1.5.2中首次引入,是低级thread模块的一个增强版.threading模块让线程使用起来更加容易,允许程序同一时间运行多个操作. 不过请注意,P ...

  6. Python的模块引用和查找路径

    模块间相互独立相互引用是任何一种编程语言的基础能力.对于“模块”这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中 ...

  7. Python Logging模块的简单使用

    前言 日志是非常重要的,最近有接触到这个,所以系统的看一下Python这个模块的用法.本文即为Logging模块的用法简介,主要参考文章为Python官方文档,链接见参考列表. 另外,Python的H ...

  8. Python标准模块--logging

    1 logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不同 ...

  9. python基础-模块

    一.模块介绍                                                                                              ...

随机推荐

  1. LeetCode: Gray Code 解题报告

    Gray CodeThe gray code is a binary numeral system where two successive values differ in only one bit ...

  2. 队列——PowerShell版

    继续读啊哈磊<啊哈!算法>感悟系列——队列 地铁售票处排队,先来的人先到队首先买完先走,后来的人排在队尾等候后买完后走. 想买票,必须排在队尾:买完票,只能从队首离开. 这种先进先出(Fi ...

  3. selinux开关

    状态查看 /usr/sbin/sestatus -v 临时打开 setenforce 1 #设置SELinux 成为enforcing模式 临时关闭 setenforce 0 #设置SELinux 成 ...

  4. C#写的工厂模式

    program.cs file using System; using System.Collections.Generic; using System.Text; namespace Console ...

  5. map和object互相转换

    /** * 使用org.apache.commons.beanutils进行转换 */ class A { public static Object mapToObject(Map<String ...

  6. Quartz 一个JOB 配置多个Trigger时注意的问题

    public class SimpleExample { public void run() throws Exception { Logger log = LoggerFactory.getLogg ...

  7. DataGridView使用技巧一:获取或设置当前单元格的内容

    当前单元格指的是DataGridView焦点所在的单元格,它可以通过DataGridView对象的CurrentCell属性取得.如果当前单元格不存在的时候,返回null. 取得当前单元格的内容: o ...

  8. MapReduce调度与执行原理系列文章

    转自:http://blog.csdn.net/jaytalent?viewmode=contents MapReduce调度与执行原理系列文章 一.MapReduce调度与执行原理之作业提交 二.M ...

  9. RunnableException与CheckedException

    Checked Exception 编译时异常 编译的时候检查你的代码可能在运行的时候抛出异常,这通常在编译的时候要去处理的. RunnableException 运行时异常,可以编译通过,但如果不处 ...

  10. Learning to act by predicting the future

    Dosovitskiy, Alexey, and Vladlen Koltun. "Learning to act by predicting the future." arXiv ...