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


    前言
    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
    作者:huhanghao

    Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容,登陆前与登陆后是不同的,或者不允许的。另外如果你刚学不久。对这方面还不熟,建议先去小编的Python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,多跟里面的人交流,比自己摸索效率更高哦!

    在python中它为我们提供了cookiejar模块,它位于http包中,用于对Cookie的支持。通过它我们能捕获cookie并在后续连接请求时重新发送,比如可以实现模拟登录功能。该模块主要的对象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。

    ## cookie的获取

    # -*- coding: UTF-8 -*-
    from urllib import request
    from http import cookiejar

    if __name__ == '__main__':
       #声明一个CookieJar对象实例来保存cookie
       cookie = cookiejar.CookieJar()
       #利用urllib.request库的HTTPCookieProcessor对象来创建cookie处理器,也就CookieHandler
       handler=request.HTTPCookieProcessor(cookie)
       #通过CookieHandler创建opener
       opener = request.build_opener(handler)
       #此处的open方法打开网页
       response = opener.open('http://www.baidu.com')
       #打印cookie信息
       for item in cookie:
           print('Name = %s' % item.name)
           print('Value = %s' % item.value)

    cookie的文件保存
    # -*- coding: UTF-8 -*-
    from urllib import request
    from http import cookiejar

    if __name__ == '__main__':

       #设置保存cookie的文件,同级目录下的cookie.txt
       filename = 'cookie.txt'
       #声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件
       cookie = cookiejar.MozillaCookieJar(filename)
       #利用urllib.request库的HTTPCookieProcessor对象来创建cookie处理器,也就CookieHandler
       handler=request.HTTPCookieProcessor(cookie)
       #通过CookieHandler创建opener
       opener = request.build_opener(handler)
       #此处的open方法打开网页
       response = opener.open('http://www.baidu.com')
       #保存cookie到文件
       cookie.save(ignore_discard=True, ignore_expires=True)


    加载保存的cookie,并进行网页访问
    # -*- coding: UTF-8 -*-
    from urllib import request
    from http import cookiejar

    if __name__ == '__main__':
       #设置保存cookie的文件的文件名,相对路径,也就是同级目录下
       filename = 'cookie.txt'
       #创建MozillaCookieJar实例对象
       cookie = cookiejar.MozillaCookieJar()
       #从文件中读取cookie内容到变量
       cookie.load(filename, ignore_discard=True, ignore_expires=True)
       #利用urllib.request库的HTTPCookieProcessor对象来创建cookie处理器,也就CookieHandler
       handler=request.HTTPCookieProcessor(cookie)
       #通过CookieHandler创建opener
       opener = request.build_opener(handler)
       #此用opener的open方法打开网页
       response = opener.open('http://www.baidu.com')
       #打印信息
       print(response.read().decode('utf-8'))
    这里对cookie的使用类似于,之前我们用到的对代理的使用。

    加载cookie,实现网站的登录
    # -*- coding: UTF-8 -*-
    from urllib import request
    from urllib import error
    from urllib import parse
    from http import cookiejar

    if __name__ == '__main__':
       #登陆地址
       login_url = 'http://www.jobbole.com/wp-admin/admin-ajax.php'    
       #User-Agent信息                  
       user_agent = r'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36'
       #Headers信息
       head = {'User-Agnet': user_agent, 'Connection': 'keep-alive'}
       #登陆Form_Data信息
       Login_Data = {}
       Login_Data['action'] = 'user_login'
       Login_Data['redirect_url'] = 'http://www.jobbole.com/'
       Login_Data['remember_me'] = '0'         #是否一个月内自动登陆
       Login_Data['user_login'] = '********'       #改成你自己的用户名
       Login_Data['user_pass'] = '********'        #改成你自己的密码
       #使用urlencode方法转换标准格式
       logingpostdata = parse.urlencode(Login_Data).encode('utf-8')
       #声明一个CookieJar对象实例来保存cookie
       cookie = cookiejar.CookieJar()
       #利用urllib.request库的HTTPCookieProcessor对象来创建cookie处理器,也就CookieHandler
       cookie_support = request.HTTPCookieProcessor(cookie)
       #通过CookieHandler创建opener
       opener = request.build_opener(cookie_support)
       #创建Request对象
       req1 = request.Request(url=login_url, data=logingpostdata, headers=head)

       #面向对象地址
       date_url = 'http://date.jobbole.com/wp-admin/admin-ajax.php'
       #面向对象
       Date_Data = {}
       Date_Data['action'] = 'get_date_contact'
       Date_Data['postId'] = '4128'
       #使用urlencode方法转换标准格式
       datepostdata = parse.urlencode(Date_Data).encode('utf-8')
       req2 = request.Request(url=date_url, data=datepostdata, headers=head)
       try:
           #使用自己创建的opener的open方法
           response1 = opener.open(req1)
           response2 = opener.open(req2)
           html = response2.read().decode('utf-8')
           index = html.find('jb_contact_email')
           #打印查询结果
           print('联系邮箱:%s' % html[index+19:-2])

       except error.URLError as e:
           if hasattr(e, 'code'):
               print("HTTPError:%d" % e.code)
           elif hasattr(e, 'reason'):
               print("URLError:%s" % e.reason)
    ​以上就是本期讲的内容,另外如果你对这方面还不熟,刚学不久,建议先去小编的Python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,多跟里面的人交流,比自己摸索效率更高哦!

  • 相关阅读:
    python BeautifulSoup库的基本使用
    python操作RabbitMQ
    MySQL主从复制
    python字典与集合操作
    常见术语
    Mac下如何使用homebrew
    springboot整合freemarker
    Servlet与JSP概念理解
    slf4j-api、slf4j-log4j12以及log4j之间什么关系?
    使用nodeJs安装Vue-cli并用它快速构建Vue项目
  • 原文地址:https://www.cnblogs.com/chengxuyuanaa/p/12042083.html
Copyright © 2020-2023  润新知