IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 爬虫学习打卡第三天——requests高阶 -> 正文阅读

[网络协议]爬虫学习打卡第三天——requests高阶

目录

一、SSL验证

二、代理设置

三、超时设置

四、身份验证?


?

一、SSL验证

SSL (Secure Sockets Layer)安全套接层。是由Netscape公司于1990年开发,用于保障Word Wide Web(WWW)通讯的安全。主要任务是提供私密性,信息完整性和身份认证

第一个栗子:请求12306

import requests

r=requests.get('https://www.12306.cn/index/') #请求的网址
print(r.status_code)   #打印状态码

运行结果:

?

?如果你有SSLError报错,说明验证证书有问题,你可以把verify参数设置为False。

import requests

r=requests.get('https://www.12306.cn/index/',verify=False) #请求的网址
print(r.status_code)   #打印状态码

?

方法一:设置忽略警告的方式来屏蔽警告

import requests
from requests.packages import urllib3

urllib3.disable_warnings()    #忽略警告方法屏蔽警告
r=requests.get('https://www.12306.cn/index/',verify=False) #请求的网址
print(r.status_code)   #打印状态码

??

方法二:捕获警告到日志的方式忽略警告?

captureWarnings()功能可用于loggingwarnings模块集成。用于通过登录和关闭来捕获警告

如果capture为True,则警告模块发出的警告将被重定向到日志记录系统。 具体来说,将使用warnings.formatwarning()格式化警告,并将结果字符串记录到名为“py.warnings”的记录器,其严重程度为WARNING。

如果capture 是False,则警告重定向到日志记录系统将停止,并且警告将被重定向到它们的原始目的地(即,之前有效的那些目标captureWarnings(True)被调用)。

import requests
import logging    #Python自带的日志模块
#from requests.packages import urllib3

#urllib3.disable_warnings()    #忽略警告方法屏蔽警告

logging.captureWarnings(True)   
r=requests.get('https://www.12306.cn/index/',verify=False) #请求的网址
print(r.status_code)   #打印状态码

?

第二个栗子:请求我的CSDN

import requests

r=requests.get('https://blog.csdn.net/qq_54715996?spm=1000.2115.3001.5343')
print(r.status_code)

?

如果你出现错误的话,可以按照以上步骤走一遍,由于我的很顺利,所以,我就没有添加忽略警告之类的东西。。。

二、代理设置

为什么要进行代理设置?

防止大规模爬取且频繁请求时,弹出验证码,或者跳转到登录认证页面。避免直接封禁客户端的IP,导致一段时间无法访问。

解决方案:设置proxies参数。

现在展示一个无效的代理,因为我没有有效的代理。。。知道以后遇到这种情况怎么处理就行。

import requests

proxies = {
  'http': 'http://10.10.1.10:3128',
  'https': 'http://10.10.1.10:1080',
}

requests.get('https://www.taobao.com', proxies=proxies)

除此之外,requests还支持SOCKS协议代理

第一步:安装socks模块。

!pip install socks

?

?

三、超时设置

不得不提这个超时设置,在我requests基础篇,当时在请求一个网站时,因为网络不好,没有设置timeout参数,等了很久。。。

timeout参数,表示发出请求到服务器返回响应的时间。

目的是,防止服务器不能及时响应,设置一个超时时间,若超过时间依然没有响应,返回报错信息。

import requests
r=requests.get('https://www.baidu.com',timeout=3)    #超时设置3秒,若三秒未响应,直接抛出异常。
print(r.text)

?

timeout = 3实际上是连接与读取之和,也可以细分,用元组的结构。timeout(1,2)。?

import requests
r=requests.get('https://www.baidu.com',timeout=(1,2))    
print(r.text)

当timeout值为None,或者不写这个参数,则不会返回超时错误信息。只需要改参数timeout的右值即可。

四、身份验证?

1、基本式身份验证

import requests  
from requests.auth import HTTPBasicAuth  

r = requests.get('https://static3.scrape.cuiqingcai.com/', auth=HTTPBasicAuth('admin', 'admin'),verify=False)  
print(r.status_code)

?

?

2、摘要式身份验证?

import requests
from requests.auth import HTTPDigestAuth  
url = 'http://httpbin.org/digest-auth/auth/user/pass'  
requests.get(url, auth=HTTPDigestAuth('user', 'pass')) 

?跟着川川学习爬虫的第三天,继续加油吧。。。。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-14 22:06:46  更:2021-11-14 22:06:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年7日历 -2024/7/3 8:24:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码