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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 2021-11-13 -> 正文阅读

[网络协议]2021-11-13

渣渣Python学习打卡之爬虫篇——第二天(requests高级)

一、SSL验证

#一、SSL验证
import requests

response = requests.get('https://www.12306.cn/index/')
print(response.status_code)

运行结果:

请添加图片描述

#若报错SSLError,表示证书验证错误,把 verify 参数设置为 False 即可
import requests

response = requests.get('https://www.12306.cn', verify=False)#去掉/index/,在括号内添加设置参数
print(response.status_code)

运行结果:
请添加图片描述

#此处报错含有警告:让我们添加证书。解决办法:
#方法一:设置忽略警告方式
import requests
from requests.packages import urllib3#导包

urllib3.disable_warnings()#设置忽略警告
response = requests.get('https://www.12306.cn', verify=False)#在括号内添加设置参数
print(response.status_code)

运行结果:
请添加图片描述

#方法二:捕获警告到日志
import logging#导入logging包
import requests
logging.captureWarnings(True)#捕获警告到日志
response = requests.get('https://www.12306.cn', verify=False)
print(response.status_code)

运行结果:
请添加图片描述
二、代理设置

#为什么要进行“代理设置”?
#对于某些网站,进行大规模爬取时,可能会弹出验证码,或者转到登录认证页面,
#甚至直接封禁客户端IP,导致一定时间内难以访问

#使用proxies参数来设置代理
首先,安装socks库:

!pip install socks#安装 socks 库

安装成功界面如下:
请添加图片描述

proxies 参数形式例子(运行无效),需要换成自己买的有效代理才可行

import requests

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

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

运行:略

#若代理需要使用 HTTP Basic Auth,则程序如下:   此处的代理无效,大概率运行不出来
import requests

proxies = {'https': 'http://user:password@10.10.1.10:3128/',}
requests.get('https://www.taobao.com', proxies=proxies)

运行:略

#除基本HTTP 代理外,requests 还支持 SOCKS 协议的代理,例子如下:  (注意:ip必须是有用的ip才会有效果)
import requests

proxy = '123.58.10.36:8080' #本地代理ip
#proxy='username:password@123.58.10.36:8080'
proxies={
    'http':'http://'+proxy,
    'https':'https://'+proxy
}
try:
    response = requests.get('http://httpbin.org/get',proxies=proxies)
    print(response.txt)
except requests.exceptions.ConnectionError as e:
    print('错误:',e.args)

三、超时设置

#为什么要进行'超时设置'?
#在本机网络状况不好或者服务器网络响应太慢甚至无响应时,可能会等待特别久的时间才可能收到响应,甚至到最后收不到响应而报错。为了防止服务器不能及时响应,应该设置一个超时时间,即超过了这个时间还没有得到响应,那就报错。
#使用timeout参数来实现
#timeout参数
import requests

r = requests.get('https://blog.csdn.net/weixin_46211269?spm=1000.2115.3001.5343&type=blog',timeout=1)#此处timeout参数设为1
print(r.status_code)

运行结果:
请添加图片描述

#这样的方式将超时时间设置为 1 秒,1 秒内没有响应,那就抛出异常。
#请求分为:连接(connect)+读取(read)
#上述timeout为:timeout(connect)+timeout(read)
#若需要分别指定,则可传入一个元组
import requests

r = requests.get('https://blog.csdn.net/weixin_46211269?spm=1000.2115.3001.5343&type=blog', timeout=(10,20))
print(r.status_code)

运行结果:
请添加图片描述

#若想永久等待:
#方法一:requests.get中的参数设置为timeout=None
import requests

r = requests.get('https://blog.csdn.net/weixin_46211269?spm=1000.2115.3001.5343&type=blog', timeout=None)
print(r.status_code)

想永久等待而参数设置为timeout=None运行结果:
请添加图片描述

#方法二:requests.get中直接不加参数
import requests

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

想永久等待而不加参数运行结果:
请添加图片描述
四、身份认证

#原因:免登录

#(1):基本身份认证
#身份验证基本格式:  此处未加SSL验证,必然报错
import requests
from requests.auth import HTTPBasicAuth

r = requests.get('http://localhost:5000',auth=HTTPBasicAuth('username','password'))
print(r.status_code)

运行结果:
请添加图片描述

#加入SSL验证(verify=False):
import requests  
from requests.auth import HTTPBasicAuth  

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

基本身份认证运行结果:
请添加图片描述
#认证失败 咋办呢???

#(2):摘要式身份认证(Digest Authentication)——另一种非常流行的HTTP身份认证形式
#使用Requests对其支持:开箱即用   

import requests
from requests.auth import HTTPDigestAuth
url = 'http://httpbin.org/digest-auth/auth/user/pass'#可更改digest-auth/auth/user/pass?
requests.get(url,auth=HTTPDigestAuth('user','pass'))#可更改user和pass?

Digest Authentication运行结果:
请添加图片描述

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-15 16:11:28  更:2021-11-15 16:13:25 
 
开发: 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年11日历 -2024/11/26 6:49:38-

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