栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

爬虫学习打卡第三天——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()功能可用于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参数,表示发出请求到服务器返回响应的时间。

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

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')) 

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/488339.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号