VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > python爬虫 >
  • Python爬虫连载6-cookie深入使用实例化实现自动登录

一、使用cookie登录

1.直接把cookie复制下去,然后手动放到请求头

2.http模块包含一些关于cookie的模块,通过他们我们可以自动使用cookie

(1)cookieJar

管理存储cookie,向传出的http请求添加cookie;cookie存储在内存中,CookieJar实例回收后cookie​将消失;

(2)FileCookieJar(filename,delayload=None,policy=Nnone)

使用文件管理cookie​;filename是保存cookie的文件

filename是保存cookie的文件

(3)MozillaCookieJar(filename,delayload=None,policy=None)

创建于mocilla浏览器cookie,txt兼容的FileCookieJar实例

(4)LwpCookieJar(filename,delayload-None,policy=None)

创建与libww-perl标准兼容的FileCookieJar实例

(5)​他们的关系是:CookieJar-->FileCookirJar-->MozillaCookieJar & LwpCookieJa

3.利用cookiejar访问人人网

自动使用cookie登录,​大致流程为:(1)打开登陆页面后自动通过用户名密码登录​;(2)自动提取反馈回来的cookie​;(3)利用提取的cookie登录隐私页面​;

4.handler是Handler的实例,常用参看案例代码

(1)用来处理复杂请求

 

复制代码
#生成cookie的管理器

cookie_handler = request.HTTPCookieProcessor(cookie)

#创建http请求管理器

http_handler = request.HTTPHandler()

#生成https管理器

https_handler = request.HTTPHandler()
复制代码

 

 

(2)创立handler后,使用opener打开,打开后相应的业务由相应的handler处理

(3)cookie作为一个变量,打印出来

cookie的属性​:

name:名称     value​:值    domain:可以访问此cookie的域名     expires:过期时间       size:大小    Http字段

 

复制代码
 

from urllib import request,parse

from http import cookiejar

#创建cookiejar实例

cookie = cookiejar.CookieJar()

#生成cookie的管理器

cookie_handler = request.HTTPCookieProcessor(cookie)

#创建http请求管理器

http_handler = request.HTTPHandler()

#生成https管理器

https_handler = request.HTTPHandler()

#创建请求管理器

opener = request.build_opener(http_handler,https_handler,cookie_handler)

​

def login():

    """

    负责初次登录

    需要输入用户名密码

    :return:

    """

    url = "http://www.renren.com/PLogin.do"

    data = {

        "email":"1215217867@qq.com",

        "password":"481648541615485"

    }

    #把数据进行编码

    data = parse.urlencode(data)

    #创建一个请求对象

    req = request.Request(url,data=data.encode())

    #使用opener发起请求

    rep = opener.open(req)

​

def getHomePage():

    url = "http://www.renren.com/965187997/profile"

    #如果已经执行了login函数,则opener自动已经包含相应的cookie值

    rsp = opener.open(url)

​

    html = rsp.read().decode()

    with open("rsp.html","w") as f:

        f.write(html)

​

​

if __name__ == "__main__":

    """

    执行完login之后,会得到授权之后的cookie

    我们尝试把cookie打印出来

    """

    login()

    print(cookie)

    for item in cookie:

        print(type(item))

        print(item)

        for i in dir(item):

            print(i)

    getHomePage()
复制代码

 

二、源码

Reptitle6_CookieJar.py

https://github.com/ruigege66/PythonReptile/blob/master/Reptitle6_CookieJar.py​

2.CSDN:https://blog.csdn.net/weixin_44630050

 

出  处:https://www.cnblogs.com/ruigege0000/p/12289556.html


相关教程