Python代码如何发送http请求?

微信公众号:愤怒的it男,超多Python技术干货文章。

一、前言

对于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技术干货文章。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值