目录
一、SSL验证
二、代理设置
三、超时设置
四、身份验证
一、SSL验证
SSL (Secure Sockets Layer)安全套接层。是由Netscape公司于1990年开发,用于保障Word Wide Web(WWW)通讯的安全。主要任务是提供私密性,信息完整性和身份认证。
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()功能可用于logging与warnings模块集成。用于通过登录和关闭来捕获警告。
如果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参数,表示发出请求到服务器返回响应的时间。
目的是,防止服务器不能及时响应,设置一个超时时间,若超过时间依然没有响应,返回报错信息。
不得不提这个超时设置,在我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'))
跟着川川学习爬虫的第三天,继续加油吧。。。。



