爬虫学习打卡第三天——requests高阶

目录

@[目录]

##1.SSL验证

##2.代理设置

##3.超时设置

##4.身份认证

##5.总结

1)基本身份认证

2)摘要式身份认证


##2.代理设置

##3.超时设置

##4.身份认证

##5.总结


##SSL验证

import requests

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

返回200,证明正常

如果有报错SSLError,表示证书验证错误,把 verify 参数设置为 False

import requests

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

爬虫学习打卡第三天——requests高阶_第1张图片

有个警告,可以通过设置忽略警告的方式来屏蔽这个警告 

#添加证书,并设置忽略警告
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
import requests
logging.captureWarnings(True)
response = requests.get('https://www.12306.cn', verify=False)
print(response.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)

若代理需要使用 HTTP Basic Auth

import requests

proxies = {'https': 'http://user:[email protected]:3128/',}
requests.get('https://www.taobao.com', proxies=proxies)

requests 还支持 SOCKS 协议的代理(socks协议推荐) 这个网站(我看过好多觉得这个好)

SOCKS 代理协议漫谈_yetugeng的专栏-CSDN博客_socks协议

首先,需要安装 socks 这个库:

import requests

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

 学到了就是没自己的代理

##超时设置

目的:在本机网络状况不好或者服务器网络响应太慢甚至无响应时,我们可能会等待特别久的时间才可能收到响应,甚至到最后收不到响应而报错。为了防止服务器不能及时响应,应该设置一个超时时间,即超过了这个时间还没有得到响应,那就报错。这需要用到 timeout 参数。这个时间的计算是发出请求到服务器返回响应的时间。
 

import requests

r = requests.get('https://blog.csdn.net/qq_62932195', timeout=1)
print(r.status_code)

 请求分为两个阶段,即连接(connect)和读取(read)

timeout = connect + read

 timeout=(10,20)

如果想永久等待,可以直接将 timeout 设置为 None,或者不设置直接留空,因为默认是 None

import requests

r = requests.get('https://blog.csdn.net/qq_62932195', timeout=None)
print(r.status_code)

##身份认证

https://static3.scrape.cuiqingcai.com/

这个就是个身份认证

基本格式

import requests  
from requests.auth import HTTPBasicAuth  

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

1)基本身份认证

import requests  
from requests.auth import HTTPBasicAuth  

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

爬虫学习打卡第三天——requests高阶_第2张图片

 SSL错误:加上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)

手动登陆(账号密码都是admin) 

爬虫学习打卡第三天——requests高阶_第3张图片

 

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

返回      200

2)摘要式身份认证

另一种非常流行的HTTP身份认证形式是摘要式身份认证Digest Authentication,Requests 对它的支持也是开箱即可用的:

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

##总结

今天学到好多知识,期待应用

你可能感兴趣的:(笔记,爬虫)