百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

Python 基础教程十五之 Python 使用requests库发送http请求

suiw9 2025-03-30 20:50 9 浏览 0 评论

前言

在现代网络应用中,HTTP(HyperText Transfer Protocol)协议是客户端与服务器之间数据传输的核心。作为Python开发者,了解和掌握如何发送和处理HTTP请求至关重要。无论你是开发Web应用、爬虫,还是进行API集成,本文都将从基础到高级,逐步引导你成为HTTP请求处理的高手。

Python http请求

在Python中,进行HTTP请求通常有几种方式。最常用的库是requests和urllib。下面将分别介绍如何使用这两个库来发送HTTP请求。

使用requests库

首先,你需要安装requests库(如果你还没有安装的话):

pip3 install requests
edy@edydeMacBook-Pro bin % pip3 install requests
Requirement already satisfied: requests in /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages (2.32.3)
Requirement already satisfied: charset-normalizer<4,>=2 in /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages (from requests) (3.4.1)
Requirement already satisfied: idna<4,>=2.5 in /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages (from requests) (3.10)
Requirement already satisfied: urllib3<3,>=1.21.1 in /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages (from requests) (2.3.0)
Requirement already satisfied: certifi>=2017.4.17 in /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages (from requests) (2025.1.31)

[notice] A new release of pip is available: 24.3.1 -> 25.0.1
[notice] To update, run: pip3 install --upgrade pip

然后,你可以使用以下方式来发送HTTP请求:

发送GET请求

requests.get(url, params=None, **kwargs)

  • url: 请求的URL。
  • params: (可选)要在URL中附加的查询参数。
  • **kwargs: 其他可选参数,例如 headers、timeout 等。

参数说明:若需要传请求参数,可直接在 url 后面添加,也可以在调用get()方法时通过关键字params传入,需要注意的是params需要传入dict(字典)类型。

下面以请求百度为例,发送get请求:

import requests

# 发送GET请求
response = requests.get(url='http://www.baidu.com/s?wd=requests模块')
print(response.text)

# 通过params传参
response2 = requests.get(url='http://www.baidu.com/s', params={"wd": "requests模块"})
print(response.status_code)		# 打印状态码

发送POST请求

requests.post(url, data=None, json=None, **kwargs)

  • url: 请求的URL。
  • data: (可选)要发送的表单数据。
  • json: (可选)要作为 JSON 发送的数据。
  • **kwargs: 其他可选参数,例如 headers、timeout 等。

参数说明:可传dict类型也可传json类型,dict类型使用关键字data传参,json类型则为使用关键字json传参。若无需传参可不传。

下面以请求企业微信群机器人为例,发送post请求:

import requests

# 发送POST请求
path = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=test-12345-5678-9876-test'
header = {
    "Content-Type": "application/json"
}
json = {
    "msgtype": "text",
    "text": {
        "content": "hello world"
    }
}
response = requests.post(url = path, json = json, headers=header)
print(response.status_code)		# 打印状态码
print(response.json())

打印信息如下:

200
{'errcode': 0, 'errmsg': 'ok'}

获取响应数据

常见的属性:

response.status_code:获取响应状态码

response.cookies:获取cookies

response.headers:获取头部信息

response.url:获取url

response.text:自动识别文本中的编码格式进行解码,但有时候不准确,会出现乱码

response.content.decode('utf-8'):response.content,获取字节流的数据,进行decode解码,默认是utf8

response.json():json方法可以将json字符串转换成对应的python类型的数据,接口返回的数据99%都是json类型的

使用连接池

建立HTTP连接是一个耗时的操作,为了减少连接的开销,你可以使用连接池来复用已有的连接。在requests库中,你可以通过设置Session对象来启用连接池。

import requests

path = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=c615f575-5dbf-4dde-aa16-e5db014782de'
header = {
    "Content-Type": "application/json"
}
json = {
    "msgtype": "text",
    "text": {
        "content": "hello world"
    }
}

session = requests.session()
response = session.post(url = path, json = json, headers=header)
print(response.status_code)		# 打印状态码
print(response.json())

session.close()

相关推荐

看完这一篇数据仓库干货,终于搞懂什么是hive了

一、Hive定义Hive最早来源于FaceBook,因为FaceBook网站每天产生海量的结构化日志数据,为了对这些数据进行管理,并且因为机器学习的需求,产生了Hive这们技术,并继续发展成为一个成...

真正让你明白Hive参数调优系列1:控制map个数与性能调优参数

本系列几章系统地介绍了开发中Hive常见的用户配置属性(有时称为参数,变量或选项),并说明了哪些版本引入了哪些属性,常见有哪些属性的使用,哪些属性可以进行Hive调优,以及如何使用的问题。以及日常Hi...

HIVE SQL基础语法(hive sql是什么)

引言与关系型数据库的SQL略有不同,但支持了绝大多数的语句如DDL、DML以及常见的聚合函数、连接查询、条件查询。HIVE不适合用于联机事务处理,也不提供实时查询功能。它最适合应用在基于大量不可变数据...

[干货]Hive与Spark sql整合并测试效率

在目前的大数据架构中hive是用来做离线数据分析的,而在Spark1.4版本中spark加入了sparksql,我们知道spark的优势是速度快,那么到底sparksql会比hive...

Hive 常用的函数(hive 数学函数)

一、Hive函数概述及分类标准概述Hive内建了不少函数,用于满足用户不同使用需求,提高SQL编写效率:...

数仓/数开面试题真题总结(二)(数仓面试时应该讲些什么)

二.Hive...

Tomcat处理HTTP请求流程解析(tomcat 处理请求过程)

1、一个简单的HTTP服务器在Web应用中,浏览器请求一个URL,服务器就把生成的HTML网页发送给浏览器,而浏览器和服务器之间的传输协议是HTTP,那么接下来我们看下如何用Java来实现一个简单...

Python 高级编程之网络编程 Socket(六)

一、概述Python网络编程是指使用Python语言编写的网络应用程序。这种编程涉及到网络通信、套接字编程、协议解析等多种方面的知识。...

[904]ScalersTalk成长会Python小组第20周学习笔记

Scalers点评:在2015年,ScalersTalk成长会Python小组完成了《Python核心编程》第1轮的学习。到2016年,我们开始第二轮的学习,并且将重点放在章节的习题上。Python小...

「web开发」几款http请求测试工具

curl命令CURL(CommandLineUniformResourceLocator),是一个利用URL语法,在命令行终端下使用的网络请求工具,支持HTTP、HTTPS、FTP等协议...

x-cmd pkg | hurl - 强力的 HTTP 请求测试工具,让 API 测试更加简洁高效

简介...

Mac 基于HTTP方式访问下载共享文件,配置共享服务器

方法一:使用Python的SimpleHTTPServer进行局域网文件共享Mac自带Python,所以不需要安装其他软件,一条命令即可...

Python 基础教程十五之 Python 使用requests库发送http请求

前言...

使用curl进行http高并发访问(php curl 大量并发获得结果)

本文主要介绍curl异步接口的使用方式,以及获取高性能的一些思路和实践。同时假设读者已经熟悉并且使用过同步接口。1.curl接口基本介绍curl一共有三种接口:EasyInterface...

Django 中的 HttpResponse理解和用法-基础篇1

思路是方向,代码是时间,知识需积累,经验需摸索。希望对大家有用,有错误还望指出。...

取消回复欢迎 发表评论: