python使用requests库实现轻松发起HTTP请求
作者:morris131
requests是Python中一个非常流行的用于发送HTTP请求的第三方库,它提供了简洁的API,使得发送各种HTTP请求变得非常容易,下面我们来看看具体实现方法吧
requests是Python中一个非常流行的用于发送HTTP请求的第三方库。它提供了简洁的API,使得发送各种HTTP请求(如GET、POST、PUT、DELETE等)变得非常容易。
以下是一些基本的用法示例:
安装
首先,你需要安装requests库。如果你还没有安装,可以使用pip进行安装:
> pip install requests
发送GET请求
import requests # mock data url: https://jsonplaceholder.typicode.com/ resp = requests.get("http://jsonplaceholder.typicode.com/posts/3") if resp.status_code == 200: # 获取响应内容(JSON格式) data = resp.json() print(data) else: print(f"请求失败,状态码:{resp.status_code}")
发送GET请求带参数
import requests # mock data url: https://jsonplaceholder.typicode.com/ param = { "userId": 2 } resp = requests.get("http://jsonplaceholder.typicode.com/posts", params=param) if resp.status_code == 200: # 获取响应内容(JSON格式) data = resp.json() print(data) else: print(f"请求失败,状态码:{resp.status_code}")
发送POST请求
import requests data = { "userId": 11, "title": "requests post demo", "body": "requests post body" } resp = requests.post("http://jsonplaceholder.typicode.com/posts", data=data) if resp.status_code == 200 or resp.status_code == 201: # 获取响应内容(JSON格式) data = resp.json() print(data) else: print(f"请求失败,状态码:{resp.status_code}")
设置请求头
import requests import json # mock data url: https://jsonplaceholder.typicode.com/ data = { "userId": 11, "title": "requests post demo", "body": "requests post body" } header = { 'Content-Type': 'application/json_demo' } resp = requests.post("http://jsonplaceholder.typicode.com/posts", data=json.dumps(data), headers=header) if resp.status_code == 200 or resp.status_code == 201: # 获取响应内容(JSON格式) data = resp.json() print(data) else: print(f"请求失败,状态码:{resp.status_code}")
设置Cookie和获取Cookie
import requests # mock data url: https://jsonplaceholder.typicode.com/ cookies = { 'session_id': '12345', 'user_token': 'abcdef' } # 发送请求,并带上 cookies resp = requests.get("http://jsonplaceholder.typicode.com/posts/1", cookies=cookies) # 从响应中获取 cookies cookies = resp.cookies.get_dict() print(cookies)
使用Session管理Cookies
当你需要跨多个请求保持cookies时,requests.Session对象特别有用。它允许你在会话期间自动存储和发送cookies。
import requests # 创建一个会话对象 session = requests.Session() # 发送第一个请求,服务器可能会设置一些 cookies response = session.get('https://example.com/login') # 发送第二个请求,这次请求会自动带上之前设置的 cookies response = session.get('https://example.com/profile') # 你可以检查响应中的 cookies print(session.cookies.get_dict())
处理响应
response.status_code:HTTP状态码
response.text:响应内容的字符串形式
response.content:响应内容的二进制形式
response.json():将响应内容解析为JSON对象(前提是响应内容是JSON格式)
异常处理
在发送请求时,你可能会遇到各种异常,如网络问题、无效的URL等。
可以使用try-except块来捕获这些异常:
import requests try: response = requests.get('https://api.example.com/data') response.raise_for_status() # 如果响应状态码不是 200,则引发 HTTPError 异常 data = response.json() print(data) except requests.exceptions.HTTPError as errh: print(f"HTTP 错误:{errh}") except requests.exceptions.ConnectionError as errc: print(f"连接错误:{errc}") except requests.exceptions.Timeout as errt: print(f"请求超时:{errt}") except requests.exceptions.RequestException as err: print(f"请求错误:{err}")
打印完整的请求和响应报文包含头
import http import logging import requests # 配置logging logging.basicConfig(level=logging.DEBUG) logging.getLogger('requests').setLevel(logging.DEBUG) http.client.HTTPConnection.debuglevel = 1 # mock data url: https://jsonplaceholder.typicode.com/ resp = requests.get("http://jsonplaceholder.typicode.com/posts/3") if resp.status_code == 200: # 获取响应内容(JSON格式) data = resp.json() print(data) else: print(f"请求失败,状态码:{resp.status_code}")
到此这篇关于python使用requests库实现轻松发起HTTP请求的文章就介绍到这了,更多相关python requests发起HTTP请求内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!