Python代码如何发送http请求?

一、前言

对于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

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!