由于http协议是无状态协议(假如登录成功,当访问该网站的其他网页时,登录状态消失),此时,需要将会话信息保存起来,通过cookie或者session的方式

cookie

  将所有的回话信息保存在客户端

session    

  将会话信息保存在服务端,但是服务端给客户端发的sessionid信息会保存在客户端的cookie里

Cookie 实战

python3.x   

  Cookiejar

python2.x

  Cookielib

实例演示:

#!/usr/bin/env python
#-*-coding:utf-8-*- import urllib.request
import urllib.parse
import http.cookiejar url = "http://bbs.chinaunix.net/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=LUPvX" postdata = urllib.parse.urlencode({"username":"weisuen","password":"aA123456"}).encode('utf-8') #使用urlencode处理,在设置为utf-8编码 req = urllib.request.Request(url,postdata) #构建request对象 req.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3107.4 Safari/537.36") data = urllib.request.urlopen(req).read() #登陆并爬取网页 url2 = "http://bbs.chinaunix.net/" req2 = urllib.request.Request(url2,postdata) req2.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3107.4 Safari/537.36") data2 = urllib.request.urlopen(req2).read() #写入到文件
with open('1.html','wb') as one, open('2.html','wb') as two:
one.write(data)
two.write(data2)

未设置cookie登陆网站

将文件打开,1.html显示内容已经登陆成功,2.html显示没有登陆,这是由于没有设置cookie导致

添加cookie

思路:

A、导入Cookie处理模块http.cookiejar

B、使用http.cookiejar.CookieJar()创建CookieJar对象

C、使用HTTPCookieProcessor创建cookie处理器,并以其为参数构建opener对象

D、创建全局默认的opener对象

对以上代码修改为: 

#!/usr/bin/env python
#-*-coding:utf-8-*- import urllib.request
import urllib.parse
import http.cookiejar
import sys,json # print (sys.getdefaultencoding()) url = "http://bbs.chinaunix.net/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=LUPvX" postdata = urllib.parse.urlencode({"username":"weisuen","password":"aA123456"}).encode('utf-8') req = urllib.request.Request(url,postdata) req.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3107.4 Safari/537.36") #使用http.cookiejar.CookieJar()创建CookieJar对象
cookie_jar = http.cookiejar.CookieJar() ##创建cookieJar对象 #创建opener对象
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie_jar)) ##创建全局默认的opener对象
urllib.request.install_opener(opener) data = opener.open(req).read()
#content = data.read() url2 = "http://bbs.chinaunix.net/"
data2 = urllib.request.urlopen(url2).read() with open('3.html','wb') as one, open('4.html','wb') as two:
one.write(data)
two.write(data2)

创建cookie登陆网站

此时打开3.html和4.html全部在登陆状态

python爬虫之Cookie的更多相关文章

  1. python爬虫+使用cookie登录豆瓣

    2017-10-09 19:06:22 版权声明:本文为博主原创文章,未经博主允许不得转载. 前言: 先获得cookie,然后自动登录豆瓣和新浪微博 系统环境: 64位win10系统,同时装pytho ...

  2. python爬虫-使用cookie登录

    前言: 什么是cookie? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密). 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想 ...

  3. Python爬虫之Cookie和Session

    关于cookie和session估计很多程序员面试的时候都会被问到,这两个概念在写web以及爬虫中都会涉及,并且两者可能很多人直接回答也不好说的特别清楚,所以整理这样一篇文章,也帮助自己加深理解 什么 ...

  4. Python爬虫之cookie的获取、保存和使用【新手必学】

    前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:huhanghao Cookie,指某些网站为了辨别用户身份.进行ses ...

  5. 【python爬虫】cookie & session

    一.什么是cookie? cookie是指网站为了鉴别用户身份,进行会话跟踪而存储在客户端本地的数据. 二.什么是session? 本来的含义是指有始有终的一些列动作,而在web中,session对象 ...

  6. Python爬虫教程

    Python爬虫(1):基本原理 Python爬虫(2):Requests的基本用法 Python爬虫(3):Requests的高级用法 Python爬虫(4):Beautiful Soup的常用方法 ...

  7. python爬虫基础16-cookie在爬虫中的应用

    Cookie的Python爬虫应用 Cookie是什么 Cookie,有时也用其复数形式 Cookies,英文是饼干的意思.指某些网站为了辨别用户身份.进行 session 跟踪而储存在用户本地终端上 ...

  8. python爬虫 - Urllib库及cookie的使用

    http://blog.csdn.net/pipisorry/article/details/47905781 lz提示一点,python3中urllib包括了py2中的urllib+urllib2. ...

  9. Python爬虫入门之Cookie的使用

    本节我们一起来看一下Cookie的使用. 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密) 比如说有些网站需要 ...

随机推荐

  1. Maven使用(一)—— Maven的安装与全局配置

    一.Maven安装 Maven的安装步骤: 1.Maven官网(http://maven.apache.org/)下载压缩包,解压缩,当前最新版本是apache-maven-3.5.3-bin.zip ...

  2. CentOS安装GIt、上传项目到git仓库

    上传项目 登录服务器后安装git yum install git 新建文件夹(仓库) mkdir *.git 初始化仓库 git init --bare *.git 在本地初始化仓库 git init ...

  3. 前端nginx+Java后台ftp处理页面图片上传踩坑

    今天,将前端代码部署到服务器nginx上,在测试多图片上传时,报错413请求体空间太大,请求都没到后台,直接被nginx拦截,调整后又报错504. 整体而言,前端存在两处问题: 413 错误 :Req ...

  4. POJ 1125-Stockbroker Grapevine-最短路

    裸最短路 /*--------------------------------------------------------------------------------------*/ // H ...

  5. Python面试题练习

    1.实现1--100之和 #解答一 print sum(xrange(101)) #解答二 s=0 for i in xrange(101): s = s + i print s 2.如何在一个函数内 ...

  6. 洛谷3705 [SDOI2017] 新生舞会 【01分数规划】【KM算法】

    题目分析: 裸题.怀疑$ O(n^4log{n}) $跑不过,考虑Edmonds-Karp优化. 代码: #include<bits/stdc++.h> using namespace s ...

  7. 学习Android过程中遇到的问题及解决方法——电话监听

    也许有时你会有这样一个需求:通电话时有一个重要的事需要记下来或者和一个陌生人特别是大骗子通话时,这是就想如果能把通话录下来就方便多了.(这才是我写这个代码的目的!!!) 在此过程中,犯了一个很大的错误 ...

  8. jsp大学作业:jsp编写单选,复选判断题及得分情况

    project_1_1.jsp <%@ page contentType="text/html;charset=utf-8" language="java" ...

  9. [luogu2286][HNOI2004]宠物收养场【平衡树】

    [传送门] 前言 这一篇题解并不是为了讲什么算法,只是总结一下平衡树在OI考试中的注意事项. 题意简化(给不想看题目的小伙伴们一点福利) 给你两堆数,每一次给你一个数,每一次在另外一堆数中找到这个数的 ...

  10. sql 语句查所有父级

    常见问题,给一个记录ID,查出它的所有父级,直到顶级 使用SMSS,sql server,找到一个办法. 思路是分两步,先循环找到所有父级的ID,再用IN查出所有父级 列说明  ID=PK  Pare ...