当前位置: 首页 > article >正文

Python数据分析工具(一):Requests的用法

Python的Requests库是一个非常流行的HTTP库,用于发送各种HTTP请求。它简化了与Web服务的交互,提供了易于使用的API。以下是一些基本的Requests用法示例:

安装Requests

首先,确保你已经安装了Requests库。如果还没有安装,可以通过pip安装:

pip install requests


发送GET请求

import requests  
  
url = 'http://httpbin.org/get'  
response = requests.get(url)  
  
# 访问响应内容  
print(response.text)  # 以文本形式返回响应内容  
print(response.content)  # 以字节形式返回响应内容  
  
# 访问响应状态码  
print(response.status_code)  
  
# 访问响应头  
print(response.headers)
发送POST请求
url = 'http://httpbin.org/post'  
data = {'key': 'value'}  
  
response = requests.post(url, data=data)  
  
print(response.text)
在POST请求中,你可以通过data参数发送表单数据,通过json参数发送JSON数据:
json_data = {'key': 'value'}  
response = requests.post(url, json=json_data)  
  
print(response.text)
发送其他类型的HTTP请求

Requests支持多种HTTP方法,如PUT、DELETE、HEAD、OPTIONS等,使用方式与GET和POST类似:

# PUT请求  
url = 'http://httpbin.org/put'  
data = {'key': 'value'}  
response = requests.put(url, data=data)  
  
# DELETE请求  
url = 'http://httpbin.org/delete'  
response = requests.delete(url)  
  
# HEAD请求  
url = 'http://httpbin.org/get'  
response = requests.head(url)  
print(response.headers)  # HEAD请求通常只返回响应头
定制请求头

你可以通过headers参数定制HTTP请求头

url = 'http://httpbin.org/get'  
headers = {'User-Agent': 'my-app/0.0.1'}  
response = requests.get(url, headers=headers)  
  
print(response.text)


会话对象

Requests库还提供了会话(Session)对象,允许你跨请求保持某些参数,如cookies、headers等:

with requests.Session() as s:  
    s.headers.update({'X-Test': 'true'})  
    response = s.get('http://httpbin.org/get')  
    print(response.text)  
  
    # 发送第二个请求,此时X-Test头部也会被发送  
    response = s.get('http://httpbin.org/headers')  
    print(response.text)
异常处理

当发送请求时,可能会遇到网络问题或服务器错误,你可以通过try-except语句来捕获并处理这些异常:

try:  
    response = requests.get('http://some-nonexistent-domain')  
    response.raise_for_status()  # 如果响应状态码不是200,则抛出HTTPError异常  
except requests.RequestException as e:  
    print(e)


Requests库非常强大且易于使用,它使得与HTTP服务的交互变得简单而直观。


http://www.kler.cn/a/308597.html

相关文章:

  • 群控系统服务端开发模式-应用开发-前端个人信息功能
  • HBase理论_背景特点及数据单元及与Hive对比
  • Vue 项目打包后环境变量丢失问题(清除缓存),区分.env和.env.*文件
  • C/C++精品项目之图床共享云存储(3):网络缓冲区类和main
  • WebRTC API分析
  • 基于Python+Django+Vue3+MySQL实现的前后端分类的商场车辆管理系统
  • 游戏中的唯一id生成,防止合服id重复
  • 成功激活mac idea 记录
  • Java封装(面向对象)
  • 104.WEB渗透测试-信息收集-FOFA语法(4)
  • 腾讯百度阿里华为常见算法面试题TOP100(4):双指针、哈希、滑动窗口
  • [go] 命令模式
  • 电信创维光猫DT741超级密码
  • 【LeetCode】每日一题 2024_9_13 预算内的最多机器人数目(滑动窗口、单调队列)
  • 文件标识符fd
  • 嵌入式Linux学习笔记(5)-进程间常见通讯方式(c语言实现)
  • 09_Python流程控制_分支
  • win10怎么配置dnat规则,访问win10的网口A ip的6443端口,映射到1.1.1.1的6443端口去
  • Android 源码集成可卸载 APP
  • go多线程
  • python-在PyCharm中使用PyQt5
  • 【C++】多态详解
  • mysql学习教程,从入门到精通,SQL IN BETWEEN 运算符(13)
  • 基于STM32F407ZGT6——看门狗
  • new/delete和malloc/free到底有什么区别
  • docker镜像结构