【Python3爬虫(四)】【urlib.request模块】【ssl认证+cookies(字符串类型转换、session)】

2023-11-15

上一篇:【Python3爬虫(三)】【urlib.request模块】【cookie+Request】

++++++++++开始线++++++++++++++++++

一、 ssl认证

03-requests_ssl.py

import requests
import urllib3

url = 'https://www.12306.cn/mormhweb/'
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) '
                  'Chrome/70.0.3538.67 Safari/537.36 '
}

# 因为https是有第三方CA证书认证的
# 但是12306虽然是https,但是它不是CA证书, 他是自己颁布的证书
# 解决方法是:告诉 web忽略证书访问

# 移除认证后控制台总是抛出警告
# InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly
# advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
requests.packages.urllib3.disable_warnings()

# Python3访问HTTPS时移除SSL认证
response = requests.get(url=url, headers=headers, verify=False)
data = response.content.decode()

with open('03-ssl.html', 'w', encoding='utf-8') as f:
    f.write(data)

二、 cookies

2.1 字符串类型转换

04-requests_cookies.py
在这里插入图片描述

import requests

# 请求数据url
member_url = 'https://www.yaozh.com/member/'

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) '
                  'Chrome/70.0.3538.67 Safari/537.36 '
}

# 'https://www.yaozh.com/member/'的headers里的cookie
# cookies的字符串
cookies = '_ga=GA1.2.1820447474.1535025127; MEIQIA_EXTRA_TRACK_ID=199Tty9OyANCXtHaSobJs67FU7J; ' \
          'WAF_SESSION_ID=7d88ae0fc48bffa022729657cf09807d; PHPSESSID=70kadg2ahpv7uuc8docd09iat4; ' \
          '_gid=GA1.2.133568065.1540383729; _gat=1; MEIQIA_VISIT_ID=1C1OdtdqpgpGeJ5A2lCKLMGiR4b; ' \
          'yaozh_logintime=1540383753; yaozh_user=381740%09xiaomaoera12; yaozh_userId=381740; ' \
          'db_w_auth=368675%09xiaomaoera12; UtzD_f52b_saltkey=ylH82082; UtzD_f52b_lastvisit=1540380154; ' \
          'UtzD_f52b_lastact=1540383754%09uc.php%09; ' \
          'UtzD_f52b_auth=f958AVKmmdzQ2CWwmr6GMrIS5oKlW%2BkP5dWz3SNLzr%2F1b6tOE6vzf7ssgZDjhuXa2JsO%2FIWtqd' \
          '%2FZFelWpPHThohKQho; yaozh_uidhas=1; yaozh_mylogin=1540383756; ' \
          'MEIQIA_EXTRA_TRACK_ID=199Tty9OyANCXtHaSobJs67FU7J; WAF_SESSION_ID=7d88ae0fc48bffa022729657cf09807d; ' \
          'Hm_lvt_65968db3ac154c3089d7f9a4cbb98c94=1535025126%2C1535283389%2C1535283401%2C1539351081%2C1539512967' \
          '%2C1540209934%2C1540383729; MEIQIA_VISIT_ID=1C1OdtdqpgpGeJ5A2lCKLMGiR4b; ' \
          'Hm_lpvt_65968db3ac154c3089d7f9a4cbb98c94=1540383761 '

# 需要的是字典类型,将cookies字符串类型转换为字典类型
cook_dict = {}
# 先用;拆分
cookies_list = cookies.split('; ')
for cookie in cookies_list:
    cook_dict[cookie.split('=')[0]] = cookie.split('=')[1]


# 字典推导式
cook_dict = {cookie.split('=')[0]: cookie.split('=')[1] for cookie in cookies.split('; ')}

response = requests.get(member_url, headers=headers, cookies=cook_dict)

data = response.content.decode()

with open('05-cookie.html', 'w', encoding='utf-8') as f:
    f.write(data)

2.2 session

05-requests_cookies2.py

import requests

# 请求数据url
member_url = 'https://www.yaozh.com/member/'

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) '
                  'Chrome/70.0.3538.67 Safari/537.36 '
}
# session类可以自动保存cookies,可以理解为cookiesJar
session = requests.session()
# 1.代码登录
login_url = 'https://www.yaozh.com/login'
login_form_data = {
    'username': 'xiaomaoera12',
    'pwd': 'lina081012',
    'formhash': '54AC1EE419',
    'backurl': 'https%3A%2F%2Fwww.yaozh.com%2F',
}
login_response = session.post(login_url, data=login_form_data, headers=headers)
# print(login_response.content.decode())
# 2.登录成功之后,带着有效的cookies访问请求目标数据
data = session.get(member_url, headers=headers).content.decode()

with open('05-cookie2.html', 'w', encoding='utf-8') as f:
    f.write(data)

++++++++++结束线++++++++++++++++++

下一篇:【Python3爬虫(五)】【数据解析】【正则表达式】

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Python3爬虫(四)】【urlib.request模块】【ssl认证+cookies(字符串类型转换、session)】 的相关文章

随机推荐

  • python异步爬虫

    本文主要包括以下内容 线程池实现并发爬虫 回调方法实现异步爬虫 协程技术的介绍 一个基于协程的异步编程模型 协程实现异步爬虫 线程池 回调 协程 我们希望通过并发执行来加快爬虫抓取页面的速度 一般的实现方式有三种 线程池方式 开一个线程池
  • 2023华为od机试统一考试B卷【雨花石难题】

    题目描述 MELON是一个热爱雨花石的人 他拥有一堆数量为n的精美雨花石 每块石头的重量都不相同 现在 MELON想要将这些雨花石平均分给他的朋友S和W 以使两人所得到的石头的重量相等 你需要设计一个程序 来帮助MELON确认是否可以实现这
  • 近期思维片段

    1 感觉360这样的公司就是让少数明眼人讨厌 让大多数人不知不觉接受 2 点子 lt 我买了 gt 购物分享 把自己买过的经验分享出来 3 不要负面思维 No negative thinking 4 突然想起几年前那些熟悉的名字 现在都没有
  • js匹配数组中对应的值_JS 数组中查找符合条件的数据索引

    日常工作中经常会需要我们前端获取后端为我们传递的数据放在页面中渲染的问题 大批量的数据后端会根据具体的情况来放在数组中传递给我们 但是如果遇到数组中有需要特殊需要处理的数据怎么办 原来100个数据 渲染规则完全一致 这个时候我们用一个循环就
  • 阿里云服务器安装宝塔面板图文教程

    购买完云服务器ECS后 对于新手而言如何搭建Web环境是比较棘手的 分享一款简单易用的主机面板 宝塔面板 分享阿里云服务器安装宝塔面板图文教程 本文以 Linux云服务器 CentOS 7 4 64位系统为例 一 开放安全组端口 什么是安全
  • 【已解决】使用pyaudio内录声卡声音及相关问题

    使用pyaudio内录声卡声音及相关问题解决 目录 使用pyaudio内录声卡声音及相关问题解决 1 实现代码 1 1 Recorder类 1 2 调用方法 2 问题一 选择设备实现内录 外录 解决报错 OSError Errno 9999
  • java中的异常

    throw和throws的区别 相同 都是用于做异常的抛出处理的 不同点 使用的位置 throws 使用在函数上 throw使用在函数内 后面接受的内容的个数不同 throws 后跟的是异常类 可以跟多个 用逗号隔开 throws只声明异常
  • python中rsa解密_python中的RSA加密和J中的解密

    我对密码学完全陌生 我想从服务器端生成RSA密钥对并将其发送到所有客户端 浏览器 但在此之前 我只需在python中加密数据并发送到索引 html文件 并尝试用JavaScript解密 问题是当我通过random generator Ran
  • CMake 用法导览

    原文地址 http www cnblogs com coderfenghc archive 2013 01 20 2846621 html Preface 本文是CMake官方文档CMake Tutorial http www cmake
  • Unity中定时器的简易使用

    定时器写法1 float total time void Update this total time Time deltaTime if total time gt 5 5秒后停止 return 定时器写法2 void Hello thi
  • Linux部署Tomcat无法访问

    前言 环境 RedHat7 0 Tomcat7 JDK7 安装配置成功之后 启动tomcat服务 然后使用本地浏览器访问http xx xx xx xx 8080 无法访问 解决过程 首先怀疑是配置问题 终端输出 echo JAVA HOM
  • Java CSV文件读取、写入及追加工具类

    Java CSV文件读取 写入及追加工具类 追加 FileOutputStream out new FileOutputStream file true 第二个参数true代表追加 CSVUtil java import lombok ex
  • 计算机毕业设计-基于微信小程序高校学生课堂扫码考勤签到系统-校园考勤打卡签到小程序

    注意 该项目只展示部分功能 如需了解 评论区咨询即可 本文目录 1 开发环境 2 系统的设计背景 3 各角色功能模块 3 1 用户 3 2 管理员 4 系统页面展示 4 1 学生端功能模块展示 4 2 教师端功能模块展示 5 更多推荐 6
  • 【JavaScript数据结构与算法】字符串类(计算二进制子串)

    个人简介 个人主页 前端杂货铺 学习方向 主攻前端方向 也会涉及到服务端 Node js 个人状态 在校大学生一枚 已拿多个前端 offer 秋招 未来打算 为中国的工业软件事业效力 n 年 推荐学习 前端面试宝典 Vue2 Vue3 Vu
  • unity之跳一跳(完整版)

    1 场景 1 creat gt 3D objict gt plane 并重命名为ground 做为地面 如下图 2 并调整颜色 大小至适合 如下图 调正颜色 创建material project creat gt Material 用与当作
  • Prometheus热重启

    Prometheus热重启 启动prometheus时 添加参数 web enable lifecycle nohup prometheus web enable lifecycle 然后热重启 dos下执行如下命令 curl XPOST
  • JS 条件判断if语句

    1 流程控制 JS程序一般是按照书写的顺序来执行的 这种运行称为顺序运行 是程序流的默认方向 与顺序运行不同的是另一种的运行将程序流转换到脚本的另外的部分 也就是说不按照程序流运行下一条语句 而是实现别的语句 为了试这个脚本可以使用 这个控
  • mysql-workbench使用中遇到的坑

    1 mysql workbench的安装 问题 1 弹出找不到C 的库 解决 1 的确缺少了这个库 按提示下载一个就好 安装框的左下角 有下载地址 2 有这个库 但就是找不到 可能是win10的问题 win10安装msi的文件需要管理员权限
  • JVM内存JAVA_OPTS参数说明

    JAVA OPTS server Xms2048m Xmx2048m Xss512k server 一定要作为第一个参数 在多个CPU时性能佳 Xms 初始Heap大小 使用的最小内存 cpu性能高时此值应设的大一些 Xmx java he
  • 【Python3爬虫(四)】【urlib.request模块】【ssl认证+cookies(字符串类型转换、session)】

    上一篇 Python3爬虫 三 urlib request模块 cookie Request 开始线 文章目录 一 ssl认证 二 cookies 2 1 字符串类型转换 2 2 session 一 ssl认证 03 requests ss