目录
引言在现代网络应用中,与服务器举行通讯是一个非常底子且紧张的功能。Python的[code]requests[/code]库是一个非常强盛且易于使用的HTTP库,它允许我们发送HTTP请求,与Web服务举行交互。本文将具体先容[code]requests[/code]库的使用,包括其根本概念、常勤奋能以及一些高级用法。 安装requests库在使用[code]requests[/code]库之前,我们需要先安装它。可以通过[code]pip[/code]下令来安装: [code]pip install requests [/code]根本概念HTTP请求方法HTTP协议界说了几种请求方法,最常见的有:
请求URLURL(Uniform Resource Locator)是用于定位资源的字符串。例如:[code]https://api.example.com/data[/code]。 请求头请求头(Headers)包含了关于请求的元数据,例如内容范例、用户署理等。 请求体请求体(Body)通常用于POST和PUT请求,包含要发送的数据。 根本用法发送GET请求发送GET请求是最简单的操作之一。以下是一个示例: [code]import requests response = requests.get('https://api.github.com') print(response.status_code) # 打印状态码 print(response.text) # 打印相应内容 [/code]发送POST请求发送POST请求时,通常需要传递一些数据。以下是一个示例: [code]import requests url = 'https://httpbin.org/post' data = {'key': 'value'} response = requests.post(url, data=data) print(response.status_code) # 打印状态码 print(response.json()) # 打印JSON格式的相应内容 [/code]传递请求头有时我们需要在请求中添加自界说的请求头。以下是一个示例: [code]import requests url = 'https://api.github.com' headers = {'User-Agent': 'my-app/0.0.1'} response = requests.get(url, headers=headers) print(response.status_code) # 打印状态码 print(response.text) # 打印相应内容 [/code]处理惩罚相应状态码相应的状态码表现请求的结果。常见的状态码有:
相应内容相应内容可以是文本、JSON、二进制数据等。以下是一些示例: [code]import requests response = requests.get('https://api.github.com') # 获取文本内容 print(response.text) # 获取JSON内容 print(response.json()) # 获取二进制内容 print(response.content) [/code]相应头相应头包含了关于相应的元数据。以下是一个示例: [code]import requests response = requests.get('https://api.github.com') print(response.headers) [/code]高级用法详解在把握了[code]requests[/code]库的根本用法之后,我们可以进一步探索其高级功能。这些高级功能可以帮助我们更灵活、更高效地处理惩罚复杂的HTTP请求场景。以下是对高级用法的具体说明。 1. 会话对象(Session Objects)会话对象允许我们在多个请求之间保持某些参数,例如cookies、headers等。使用会话对象可以简化代码,提高效率。 示例:[code]import requests # 创建一个会话对象 session = requests.Session() # 更新会话的默认headers session.headers.update({'User-Agent': 'my-app/0.0.1'}) # 发送第一个请求,设置一个cookie response1 = session.get('https://httpbin.org/cookies/set/sessioncookie/123456789') print(response1.text) # 发送第二个请求,获取之前设置的cookie response2 = session.get('https://httpbin.org/cookies') print(response2.text) [/code]在这个示例中,我们创建了一个会话对象,并在多个请求之间共享了headers和cookies。这样可以确保在多个请求之间保持一致的状态。 2. 处理惩罚重定向(Handling Redirects)默认情况下,[code]requests[/code]库会自动处理惩罚重定向。我们可以通过[code]allow_redirects[/code]参数来控制是否允许重定向。 示例:[code]import requests # 禁止重定向 response = requests.get('http://github.com', allow_redirects=False) print(response.status_code) # 打印状态码 print(response.headers['Location']) # 打印重定向的URL [/code]在这个示例中,我们发送了一个GET请求到[code]http://github.com[/code],并禁止了重定向。相应的状态码为301,表现请求被永久重定向,相应头中的[code]Location[/code]字段包含了重定向的目的URL。 3. 超时设置(Timeout Settings)在发送请求时,我们可以设置超时时间,以制止长时间的等待。超时时间可以应用于连接阶段和读取阶段。 示例:[code]import requests from requests.exceptions import Timeout try: # 设置连接超时和读取超时 response = requests.get('https://httpbin.org/delay/10', timeout=(3, 5)) except Timeout: print('The request timed out') [/code]在这个示例中,我们设置了一个3秒的连接超时和5秒的读取超时。假如请求在3秒内未能创建连接或在5秒内未能读取到相应数据,就会抛出[code]Timeout[/code]非常。 4. 署理支持(Proxy Support)[code]requests[/code]库支持通过署理发送请求。我们可以为差别的协议(HTTP、HTTPS)设置差别的署理。 示例:[code]import requests # 设置署理 proxies = { 'http': 'http://10.10.1.10:3128', 'https': 'http://10.10.1.10:1080', } response = requests.get('https://httpbin.org/ip', proxies=proxies) print(response.text) [/code]在这个示例中,我们为HTTP和HTTPS请求分别设置了署理。通过署理发送请求可以隐蔽客户端的真实IP地址,或者绕过某些网络限定。 5. 文件上传(File Uploads)[code]requests[/code]库支持上传文件。我们可以通过[code]files[/code]参数来上传文件。 示例:[code]import requests # 准备文件 files = {'file': open('report.xls', 'rb')} # 上传文件 response = requests.post('https://httpbin.org/post', files=files) print(response.text) [/code]在这个示例中,我们上传了一个名为[code]report.xls[/code]的文件。服务器会返回上传文件的相干信息。 6. 流式请求(Streaming Requests)对于大文件或需要实时处理惩罚的相应,我们可以使用流式请求。这样可以制止一次性加载大量数据到内存中。 示例:[code]import requests # 流式请求 response = requests.get('https://httpbin.org/stream/20', stream=True) # 逐行读取相应内容 for line in response.iter_lines(): if line: print(line) [/code]在这个示例中,我们发送了一个流式请求,并逐行读取相应内容。这样可以有效地处理惩罚大文件或实时数据流。 7. 自界说身份验证(Custom Authentication)[code]requests[/code]库支持自界说身份验证。我们可以通过继续[code]requests.auth.AuthBase[/code]类来实现自界说的身份验证逻辑。 示例:[code]import requests from requests.auth import AuthBase # 自界说身份验证类 class TokenAuth(AuthBase): def __init__(self, token): self.token = token def __call__(self, r): r.headers['Authorization'] = f'Bearer {self.token}' return r # 使用自界说身份验证发送请求 response = requests.get('https://httpbin.org/get', auth=TokenAuth('my-token')) print(response.text) [/code]在这个示例中,我们界说了一个名为[code]TokenAuth[/code]的自界说身份验证类,并在发送请求时使用了这个类。这样可以灵活地实现各种身份验证逻辑。 8. 处理惩罚Cookies[code]requests[/code]库提供了方便的方法来处理惩罚Cookies。我们可以获取、设置和删除Cookies。 示例:[code]import requests # 创建一个会话对象 session = requests.Session() # 设置一个cookie session.get('https://httpbin.org/cookies/set/sessioncookie/123456789') # 获取全部cookies cookies = session.cookies print(cookies) # 删除一个cookie cookies.clear_expired_cookies() print(cookies) [/code]在这个示例中,我们通过会话对象设置了一个cookie,并获取和删除了cookies。这样可以方便地管理会话状态。 9. 处理惩罚SSL证书验证[code]requests[/code]库默认会验证SSL证书。我们可以通过[code]verify[/code]参数来控制是否验证SSL证书。 示例:[code]import requests # 禁用SSL证书验证 response = requests.get('https://httpbin.org', verify=False) print(response.text) [/code]在这个示例中,我们禁用了SSL证书验证。这样可以方便地测试不安全的HTTPS站点,但需要注意安全风险。 10. 自界说适配器(Custom Adapters)[code]requests[/code]库允许我们自界说适配器,以实现更复杂的请求逻辑。我们可以通过继续[code]requests.adapters.HTTPAdapter[/code]类来实现自界说的适配器。 示例:[code]import requests from requests.adapters import HTTPAdapter # 自界说适配器 class MyAdapter(HTTPAdapter): def send(self, request, **kwargs): print(f'Sending request to {request.url}') return super().send(request, **kwargs) # 创建一个会话对象,并使用自界说适配器 session = requests.Session() session.mount('https://', MyAdapter()) # 发送请求 response = session.get('https://httpbin.org/get') print(response.text) [/code]在这个示例中,我们界说了一个名为[code]MyAdapter[/code]的自界说适配器,并在会话对象中使用了这个适配器。这样可以方便地实现自界说的请求逻辑。 总结到此这篇关于Python中request库的各种用法的文章就先容到这了,更多相干Python request库解析内容请搜索脚本之家从前的文章或继续欣赏下面的相干文章希望各人以后多多支持脚本之家! 来源:https://www.jb51.net/python/328870qfy.htm 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|手机版|小黑屋|梦想之都-俊月星空
( 粤ICP备18056059号 )|网站地图
GMT+8, 2025-7-1 19:31 , Processed in 0.032887 second(s), 20 queries .
Powered by Mxzdjyxk! X3.5
© 2001-2025 Discuz! Team.