您的位置:首页 > 文旅 > 旅游 > 【python库】requests

【python库】requests

2024/7/3 15:35:23 来源:https://blog.csdn.net/LongL_GuYu/article/details/140087098  浏览:    关键词:【python库】requests

文章目录

  • 基本用法
  • 进阶用法


requests是Python中一个非常流行的用于发送HTTP请求的库。它允许你发送HTTP/1.1请求,极其简单,功能强大。

基本用法

以下是一个简单的使用requests的例子:

import requests# 发送GET请求
response = requests.get('http://www.example.com')# 输出响应的文本
print(response.text)# 输出响应的状态码
print(response.status_code)

在上面的例子中,我们首先导入了requests模块,然后使用get函数发送了一个GET请求到www.example.com。然后我们打印了服务器返回的响应文本和状态码。

requests库还可以发送POST请求,并且可以携带数据:

import requests# 发送POST请求
response = requests.post('http://www.example.com', data = {'key':'value'})# 输出响应的文本
print(response.text)

在这个例子中,我们使用post函数发送了一个POST请求,并且携带了一个字典作为数据。

requests库还支持会话,可以保持某些参数,例如cookies,对于需要登录的网站非常有用:

import requests# 创建一个session对象
s = requests.Session()# 发送GET请求
s.get('http://www.example.com')# 发送POST请求
s.post('http://www.example.com', data = {'key':'value'})

在这个例子中,我们首先创建了一个Session对象,然后使用这个对象发送GET和POST请求。这样,requests会自动处理cookies和其他会话相关的参数。

进阶用法

requests库更高级的用法:

  1. 处理JSON:如果你的API返回的是JSON格式的数据,你可以直接通过.json()方法解析它:

    import requestsresponse = requests.get('http://www.example.com')
    data = response.json()
    print(data)
    
  2. 上传文件:你可以使用requests库来上传文件:

    import requestsurl = 'http://www.example.com'
    files = {'file': open('path_to_file', 'rb')}response = requests.post(url, files=files)
    
  3. 处理重定向:默认情况下,requests会自动处理重定向。但是,你也可以选择关闭这个功能:

    import requestsresponse = requests.get('http://www.example.com', allow_redirects=False)
    
  4. 处理认证:你可以使用requests库来处理HTTP认证:

    import requestsresponse = requests.get('http://www.example.com', auth=('username', 'password'))
    
  5. 设置超时:你可以设置请求的超时时间,如果服务器在指定的时间内没有响应,requests会抛出一个Timeout异常:

    import requestsresponse = requests.get('http://www.example.com', timeout=5)
    
  6. 设置代理:你可以使用requests库来设置代理:

    import requestsproxies = {'http': 'http://10.10.1.10:3128','https': 'http://10.10.1.10:1080',
    }response = requests.get('http://www.example.com', proxies=proxies)
    
  7. 使用Cookies:你可以使用requests库来处理Cookies:

    import requestscookies = dict(cookies_are='working')response = requests.get('http://www.example.com', cookies=cookies)
    
  8. 自定义Headers:你可以添加或修改请求头信息。

    headers = {'User-Agent': 'Mozilla/5.0'}
    response = requests.get('http://www.example.com', headers=headers)
    
  9. 流式下载:对于大文件,如视频、音频等,你可以使用流式下载,避免一次性加载整个文件到内存中。

    response = requests.get('http://www.example.com/file.mp4', stream=True)
    with open('file.mp4', 'wb') as f:for chunk in response.iter_content(chunk_size=1024): if chunk: # filter out keep-alive new chunksf.write(chunk)f.flush()
    
  10. SSL验证:你可以选择是否对HTTPS请求进行SSL证书验证,或者指定自己的证书。

    response = requests.get('https://www.example.com', verify=False)# 或者使用自己的证书
    response = requests.get('https://www.example.com', cert=('/path/server.crt', '/path/key'))
    
  11. 连接池与适配器requests库允许你使用连接池和适配器,这可以提高性能。

    from requests.adapters import HTTPAdapter
    s = requests.Session()
    s.mount('http://', HTTPAdapter(max_retries=3))
    
  12. 异步请求:虽然requests库本身不支持异步请求,但你可以使用requests-async库来实现异步请求。

  13. 错误处理requests库提供了一些异常类,你可以使用它们来处理网络错误、超时、重定向等问题。

  14. 处理HTTP错误状态:当服务器返回一个非200的HTTP状态码时,requests会抛出一个HTTPError异常。你可以捕获这个异常并处理它。

    try:response = requests.get('http://www.example.com')response.raise_for_status()  # 如果响应状态码不是200,将抛出HTTPError异常
    except requests.exceptions.HTTPError as err:print(err)
    
  15. 使用环境变量requests可以使用环境变量中的代理和证书。

    os.environ['http_proxy'] = 'http://10.10.1.10:3128'
    os.environ['https_proxy'] = 'http://10.10.1.11:1080'response = requests.get('http://www.example.com')
    
  16. 使用CookieJarrequests使用CookieJar对象来处理cookie,你可以创建自己的CookieJar对象并将其传递给requests

    from requests.cookies import RequestsCookieJarjar = RequestsCookieJar()
    jar.set('tasty_cookie', 'yum', domain='www.example.com', path='/')
    jar.set('gross_cookie', 'blech', domain='www.example.com', path='/')response = requests.get('http://www.example.com', cookies=jar)
    
  17. 使用Event Hooksrequests提供了事件钩子,你可以在请求的不同阶段执行自定义的函数。

    def print_response(resp, *args, **kwargs):print("Response was received!")return respresponse = requests.get('http://www.example.com', hooks=dict(response=print_response))
    
  18. 使用Session对象Session对象可以保存某些参数,如cookies,对于需要登录的网站非常有用。而且,Session对象可以复用底层的TCP连接,这对于同一域名下的多个请求来说,可以提高效率。


生在此侧,死在彼侧。我在此侧,不在彼侧。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com