一、前言
对于requests库,常用来做接口自动化,也在爬虫领域有较多应用。requests库是在urllib库的基础上进行的二次开发,使得python发送HTTP请求变得更为便捷。requests库发送get请求和发送post请求十分相似,下面我们来具体看看吧。
二、导入requests库
在使用requests库时,需要先导入requests库。
import requests
三、发送get请求
1、我们以百度为例,发送get请求,必须要传入请求链接url,如下示例:
import requests
baidu_url = "https://www.baidu.com/"
response = requests.get(baidu_url)
2、若另外需要传入请求头,则需将请求头(字典格式)传入headers,如下示例:
import requests
baidu_url = "https://www.baidu.com/s"
params = {"wd": "python"}
headers = {"Content-Type": "html"}
response = requests.get(baidu_url, headers=headers, params=params)
3、若另外需要传入请求参数,则需将参数(字典格式)传入params,如下示例:
import requests
url = "https://www.baidu.com/"
response = requests.get(url=url)
四、发送post请求
1、发送post请求与get请求类似,只不过调用的是post方法。必须要传入请求链接url,若另外需要传入请求头和请求参数,则需将请求头(字典格式)传入headers,将请求请求参数传入data或json,如下:
import requests
request_url = "https://xxx/rsn/user/login"
headers = {
"Host": "xxx",
"Content-Type": "application/json",
"Origin": "https://xxx",
"Referer": "https://xxx/iblfront/rs-histology/"
}
request_data = {
"type": 0,
"userName": "xxxxxxxxx",
"password": "xxxxxxxxx"
}
response = requests.post(request_url, headers=headers, json=request_data)
2、get和post请求参数的区别:
(1)get请求:params
(2)post请求:data或json
是使用data还是json,需要根据接口要求,若Content-Type请求头字段为:application/json,那么我们就使用json,如果是multipart/form-data或其他格式,我们就统一使用data。
3、对于返回值是json格式时(无论是什么类型请求,以下处理方式都通用),可以通过Response对象的json()方法将返回值转换为字典格式。
import requests
request_url = "https://xxx/rsn/user/login"
headers= {
"Host": "xxx",
"Content-Type": "application/json",
"Origin": "https://xxx",
"Referer": "https://xxx/iblfront/rs-histology/"
}
request_data = {
"type": 0,
"userName": "xxxxxxxxx",
"password": "xxxxxxxxx"
}
response = requests.post(request_url, headers=headers, json=request_data)
print(response.json())
五、get或post请求的响应
get或者post请求返回一个Response对象,见如下示例:
import requests
url = "https://www.baidu.com/"
response = requests.get(url=url)
print(response)
我们可以通过Response对象获得什么信息呢?以下只是部分内容,更多内容可查阅requests库的相关信息。
-
获取返回状态码:Response对象调用status_code属性
-
获取文本形式的返回报文实体:Response对象调用text属性
-
获取二进制形式(bytes类型)的返回报文实体:Response对象调用content属性
-
获取响应头:Response对象调用headers属性
-
获取服务端的编码格式:Response对象调用encoding属性
-
获取服务端返回的Cookies:Response对象调用cookies属性
-
获取请求相关信息:Response对象调用request属性(requests库将请求相关的信息也封装在了Response对象中,可根据Reponse对象中的request属性进而获取更多请求相关信息,如请求url:Response对象调用request.url)
我们看一个示例:
import requests
url = "https://www.baidu.com/"
response = requests.get(url=url)
print(response.text)
print(response.content)
print(response.headers)
print(response.status_code)
print(response.request.url)
原文始发于微信公众号(愤怒的it男):Python代码如何发送http请求?
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/236128.html