提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
目录
文章目录
前言
一、requests是什么?
二、使用步骤
1.在python环境中安装
2.引入库
2.读取数据
response.text和response.content的区别
3.response响应对象的常用属性
5.代理
正向代理和反向代理的区别
代理ip的分类
proxies代理参数的使用
使用verify参数忽略CA证书
requests发送post请求
requests.session进行状态保持
前言
目录
文章目录
前言
一、requests是什么?
二、使用步骤
1.在python环境中安装
2.引入库
2.读取数据
response.text和response.content的区别
3.response响应对象的常用属性
5.代理
正向代理和反向代理的区别
代理ip的分类
proxies代理参数的使用
使用verify参数忽略CA证书
requests发送post请求
requests.session进行状态保持
·发送http请求,获取响应数据时,需要用到requests模块,进行网络请求时,非常的人性化,被称为“人类”使用的http请求模块,使用requests可以轻轻松松完成浏览器可有的任何操作,从而将爬虫程序伪装成浏览器。
一、requests是什么?
Requests模块是第三方模块,用于网络访问,主要用来发送HTTP请求,requests模块比urllib2模块更简洁。
二、使用步骤
1.在python环境中安装
Win+r,输入cmd,打开命令行窗口,输入以下语句进行requests模块的安装
pip install requests
2.引入库
代码如下(示例):
import requests #导入requests模块
2.读取数据
代码如下(示例):获取百度的网页源码
url = 'https://www.baidu.com' #百度的url response = requests.get(url) #向目标url发送GET请求 print(response.text) #打印源码的str类型数据 -- 提取文本 print(response.encoding = 'utf-8') #手动设定解码方式,默认为utf-8 print(response.content) #打印源码的bytes类型数据 -- 提取图片文件等等 print(response.content.decode()) #打印源码的str类型数据 -- 提取文本
response.text和response.content的区别
·response.text
·数据类型 -- str
·解码类型 -- resquests模块自动根据HTTP头部对响应的编码做出有根据的推测,推测文本的编码方式
·response.content
·数据类型 -- bytes
·解码类型 -- 没指定
·网络传输的字符串都是bytes类型的
3.response响应对象的常用属性
print(response.url) #打印响应的url,响应的url可能与请求的url不一致
print(response.status_code) #打印响应状态码
print(response.request.headers) #打印响应的请求头
print(response.headers) #打印响应头
print(response.request._cookies) #打印响应的请求cookie,返回cookieJar类型
print(response.cookies) #打印响应的cookie
print(response.json()) #自动将json字符串类型的响应内容转换为python对象
4.定制头和cookie信息
url = 'https://www.baidu.com' #目标url
#请求头以字典形式保存
headers = {
'user-agent': 'browser/0.1'
}
#cookies以字典形式保存
cookies= {
'key': 'value'
}
response = requests.get(url=url, headers=headers, cookies=cookies, timeout=5)
timeout=5表示发送请求后,5秒钟内返回响应,否则返回异常
5.代理
url = 'https://www.baidu.com' #目标url
#请求头以字典形式保存
headers = {
'user-agent': 'browser/0.1'
}
#cookies以字典形式保存
cookies= {
'key': 'value'
}
response = requests.get(url=url, headers=headers, cookies=cookies, timeout=5)
timeout=5表示发送请求后,5秒钟内返回响应,否则返回异常
5.代理
·代理ip是指向一个代理服务器的ip地址
·代理服务器能够帮我们向目标服务器发送请求
正向代理和反向代理的区别
·为浏览器或客户端转发请求的,叫做正向代理,浏览器知道最终处理请求的服务器的真实ip地址,如VPN
·不为浏览器或客户端转发请求,而是为最终处理请求的服务器转发请求的,叫做反向代理,如nginx
代理ip的分类
·根据代理ip的匿名程度,代理ip可以分为以下三类
·透明代理 -- 虽然可以直接隐藏本机的ip地址,但是目标服务器还可以查到真实ip
·匿名代理 -- 目标服务器可以明确知道你使用了代理,但是无法查到真实ip
·高匿代理 -- 目标服务器无法知道你是否使用了代理。
·高匿代理是爬虫推荐使用的一种代理
· 网站使用的协议不同,从代理ip请求服务使用的协议可分为
·http代理 -- 目标url为http协议
·https代理 -- 目标url为https协议,一般情况下也支持http代理
·socks隧道代理 -- 简单地传递数据包,不关心是哪种应用协议,比http,https代理耗时短,可以转发http和https的请求
proxies代理参数的使用
#包含代理ip的字典结构
proxies = {
'https': 'https://122.51.231.113:8080'
}
response = requests.get(url, proxies=proxies)
神鸡IP地址官网,有免费的代理ipIP代理软件下载,多平台支持-神鸡软件IP代理多平台支持,提供windows软件IP代理下载接口,Android软件IP代理接口和iOS端接口,一站式动态IP,全方位服务.https://www.ruanjian.shenjidaili.com/download
使用verify参数忽略CA证书
使用浏览器浏览网页时,有时候可以看到下面的提示,出现的原因时该网站的CA证书没有经过受信任的根证书颁发机构的认证
使用verify参数解决
url = 'https://hao360.cn/' #目标url #vefiry=False表示忽略CA证书,默认值为True response = requests.get(url, verify=False)
requests发送post请求
#data字典中包含表单数据
data = {
'key': 'value'
}
response = requests.post(url,data)
requests.session进行状态保持
resquests模块中的session类能够自动处理发送请求获取响应过程中产生的cookie,进而达到状态保持的目的
requests.session的使用方法,session对象发送GET和POST请求的参数与requests模块发送请求的参数完全一致
session = requests.session() response = session.get(url, headers.) #发送GET请求 response = session.post(url, data) #发送POST请求



