Python爬虫教程-14-爬虫使用filecookiejar保存cookie文件(人人网)

Python爬虫教程-14-爬虫使用filecookiejar保存cookie文件(人人网)

  • 上一篇介绍了利用CookieJar访问人人网,本篇将使用filecookiejar将cookie以文件形式保存
  • 自动使用cookie登录,使用步骤:
    • 1.打开登录页面后,通过用户名密码登录
    • 2.自动提取反馈回来的cookie
    • 3.利用提取的cookie登录个人信息页面
    • 创建cookiejar实例
    • 生成cookie的管理器
    • 创建http请求管理器
    • 创建https请求的管理器
    • 创建请求管理器
    • 通过输入用户名和密码,获取cookie
  • 代码:
# 创建cookiejar的实例
cookie = cookiejar.CookieJar()
# 常见cookie的管理器
cookie_handler = request.HTTPCookieProcessor(cookie)
# 创建http请求的管理器
http_handler = request.HTTPHandler()

# 生成https管理器
https_handler = request.HTTPSHandler()

# 创建请求管理器
opener = request.build_opener(http_handler,https_handler,cookie_handler)

创建handle后,使用opener打开,打开后相应的业务由相应的handle处理

cookie作为一个变量打印出来

# 使用cookiejar
# cookie作为一个变量打印出来
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.HTTPSHandler()

# 创建请求管理器
opener = request.build_opener(http_handler,https_handler,cookie_handler)

def login():
    # 负责首次登录,输入用户名和密码,用来获取cookie
    url = 'http://www.renren.com/PLogin.do'

    id = input('请输入用户名:')
    pw = input('请输入密码:')

    data = {
        # 参数使用正确的用户名密码
        "email": id,
        "password": pw
    }
    # 把数据进行编码
    data = parse.urlencode(data)
    # 创建一个请求对象
    req = request.Request(url,data=data.encode('utf-8'))
    # 使用opener发起请求
    rsp = opener.open(req)

# 以上代码就可以进一步获取cookie了,cookie在哪呢?cookie在opener里
def getHomePage():
    # 地址是用在浏览器登录后的个人信息页地址
    url = "http://www.renren.com/967487029/profile"

    # 如果已经执行login函数,则opener自动已经包含cookie
    rsp = opener.open(url)
    html = rsp.read().decode()

    with open("rsp1.html", "w", encoding="utf-8")as f:
        # 将爬取的页面
        print(html)
        f.write(html)

if __name__ == '__main__':
    login()
    # 执行完login之后,会得到授权之后的cookie,下一步打印出来
    print(cookie)
    for item in cookie:
        print(type(item))
        print(item)
        for i in dir(item):
            print(i)

我们使用print(i)打印出来了cookie的所有属性
这里写图片描述
下面介绍常用的属性

cookie的属性

  • name:名称
  • value:值
  • domain:可以访问此cookie的域名
  • path:可以访问此cookie的页面路径
  • expires:过期时间
  • size:大小
  • http:字段
cookie的值虽然可以自己修改,但是修改后就会导致和服务器端数据不一致,而使cookie无效,最终登录失败

cookie的保存-FileCookieJar


# 使用filecookiejar
from urllib import request,parse
from http import cookiejar

# 创建cookiejar的实例
filename = "py15renrenCookie.txt"
cookie = cookiejar.MozillaCookieJar(filename)
# 常见cookie的管理器
cookie_handler = request.HTTPCookieProcessor(cookie)
# 创建http请求的管理器
http_handler = request.HTTPHandler()

# 生成https管理器
https_handler = request.HTTPSHandler()

# 创建请求管理器
opener = request.build_opener(http_handler,https_handler,cookie_handler)

def login():
    # 负责首次登录,输入用户名和密码,用来获取cookie
    url = 'http://www.renren.com/PLogin.do'

    id = input('请输入用户名:')
    pw = input('请输入密码:')

    data = {
        # 参数使用正确的用户名密码
        "email": id,
        "password": pw
    }
    # 把数据进行编码
    data = parse.urlencode(data)
    # 创建一个请求对象
    req = request.Request(url,data=data.encode('utf-8'))
    # 使用opener发起请求
    rsp = opener.open(req)

    '''
    保存cookie到文件
    两个参数:
        ignore_discard:表示及时cookie将要被丢弃,是否保存下来
        ignore_expires:表示如果该文件中cookie已经过期,是否保存下来
    '''
    cookie.save(ignore_discard=True, ignore_expires=True)

if __name__ == '__main__':

    login()

运行结果

这里写图片描述
本篇使用filecookiejar将cookie以文件形式保存

更多文章链接:Python 爬虫随笔


- 本笔记不允许任何个人和组织转载
posted @ 2018-09-06 20:32  xpwi  阅读(600)  评论(0编辑  收藏  举报