Python requests模块使用

(一)、requests模块介绍

Requests 使用的是 urllib3,是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,从而使得Pythoner进行网络请求时,变得美好了许多,使用Requests可以轻而易举的完成浏览器可有的任何操作

Python标准库中提供了:urllib、urllib2、httplib等模块以供Http请求,不用这些 API 的原因懂的都懂。它需要巨大的工作量,甚至包括各种方法覆盖,来完成最简单的任务。

Request 优点

  • 支持HTTP连接保持和连接池
  • 支持使用cookie保持会话
  • 支持文件上传
  • 支持自动响应内容的编码
  • 支持国际化的URL和POST数据自动编码
  • 支持自动实现持久连接keep-alive。

(二)、requests模块使用

一、安装导入模块

安装requests模块:
pip install requests
导入模块:
import requests

二、HTTP请求类型

# 1 GET请求
requests.get(“https://www.baidu.com”)
# 2 POST请求
requests.post(“https://www.baidu.com”)
# 3 PUT请求
requests.put(“https://www.baidu.com”)
# 4 DELETE请求
requests.delete(“https://www.baidu.com”)
# 5 HEAD请求
requests.head(“https://www.baidu.com”)
# 6 OPTIONS请求
requests.options(“https://www.baidu.com”)                                     

三、HTTP请求参数

以get为例:

url = "https://www.baidu.com"	         # 访问网页的URL
headers = {
	'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36 SE 2.X MetaSr 1.0',
	'content-type': 'application/json'}  # 请求头内容,以键值对形式
params = {'key':'value'}	             # 字典传递参数,如果值为None的键不会被添加到url中
data = {'key':'value'}	                 # post使用,如果传递的data是string而不是dict,需要先调用dumps方法格式化一下,例 data = json.dumps(data)
cookies = {'key':'value'}	             # 必要时可以提前添加
timeout = 5	                             # 设置秒数(5s)超时,仅对于连接有效
proxies = {'http':'ip1', 'https':'ip2' } # 设置访问代理ip

r = requests.get(url=url, headers=headers, params=params, cookies=cookies, timeout=timeout, proxies=proxies) 


四、响应内容

r.encoding                       #获取当前的编码
r.encoding = 'utf-8'             #设置编码
r.status_code                    #响应状态码
r.headers                        #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
r.requests.headers               #返回发送到服务器的头信息
r.cookies                        #返回cookie
r.history                        #返回重定向信息,当然可以在请求是加上allow_redirects = false 阻止重定向

r.text                           #以encoding解析返回内容。字符串方式的响应体,会自动根据响应头部的字符编码进行解码。
r.content                        #以字节形式(二进制)返回。字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩。
r.raw                            #返回原始响应体,也就是 urllib 的 response 对象,使用 r.raw.read()

r.ok                             # 查看r.ok的布尔值便可以知道是否登陆成功
 
#*特殊方法*#
r.json()                         #Requests中内置的JSON解码器,以json形式返回,前提返回的内容确保是json格式的,不然解析出错会抛异常
r.raise_for_status()             #失败请求(非200响应)抛出异常

五、以上汇总使用

# HTTP请求类型
# get类型
r = requests.get(”https://www.baidu.com”)
# post类型
r = requests.post(“https://www.baidu.com”)
# put类型
r = requests.put(“https://www.baidu.com”)
# delete类型
r = requests.delete(“https://www.baidu.com”)
# head类型
r = requests.head(“https://www.baidu.com”)
# options类型
r = requests.options(“https://www.baidu.com”)

# 获取响应内容
print(r.content) #以字节的方式去显示,中文显示为字符
print(r.text) #以文本的方式去显示

#URL传递参数
params= {'num1': '1234', 'str1': '一二三四'}
r = requests.get(“https://www.baidu.com”, params=params) 
print(r.url) #示例为https://www.baidu.com?num1=1234&str1=一二三四

#获取/修改网页编码
r = requests.get('https://www.baidu.com')
print (r.encoding)

#json处理
r = requests.get('https://www.baidu.com')
print(r.json()# 需要先import json    

# 定制请求头
url = 'https://www.baidu.com'
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36 SE 2.X MetaSr 1.0'}
r = requests.post(url, headers=headers)
print (r.request.headers)

#复杂post请求
url = 'https://www.baidu.com'
data = {'key': 'value'}
r = requests.post(url, data=json.dumps(data)) #如果传递的data是string而不是dict,需要先调用dumps方法格式化一下

# post多部分编码文件
url = 'https://www.baidu.com'
files = {'file': open('upFile.xls', 'rb')}
r = requests.post(url, files=files)

# 响应状态码
r = requests.get('https://www.baidu.com')
print(r.status_code)
    
# 响应头
r = requests.get('https://www.baidu.com')
print (r.headers)
print (r.headers['Content-Type'])
print (r.headers.get('content-type')) #访问响应头部分内容的两种方式
    
# Cookies
url = 'https://www.baidu.com'
r = requests.get(url)
r.cookies['cookie_key']    #读取cookies
    
url = 'https://www.baidu.com'
cookies = dict(cookies_key='value')
r = requests.get(url, cookies=cookies) #发送cookies

#设置超时时间
r = requests.get('https://www.baidu.com', timeout=5)

#设置访问代理
proxies = {
           "http": "http://192.168.172.1:6666",
           "https": "http://192.168.172.1:6666",
          }
r = requests.get('https://www.baidu.com', proxies=proxies)

#如果代理需要用户名和密码,则需要这样:
proxies = {
    "http": "http://user:pass@192.168.172.1:6666/",
}

(四)、requests模块应用

参考(以后再整理):
https://www.cnblogs.com/lanyinhao/p/9634742.html
https://www.cnblogs.com/tangdongchu/p/4229049.html#t4

参考网址

其他网站:
https://www.cnblogs.com/lanyinhao/p/9634742.html
https://www.cnblogs.com/tangdongchu/p/4229049.html#t0
https://www.cnblogs.com/wupeiqi/articles/6283017.html

自学专用:
https://cn.python-requests.org/zh_CN/latest/user/quickstart.html#id4
https://2.python-requests.org/en/master/
https://docs.python-requests.org/en/latest/user/quickstart/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值