Python__requests模块的基本使用

1 - 安装和导入

pip install requests
import requests

2 - requsts的请求方法

requests.get('https://www.baidu.com/')       # GET请求:     请求获取url位置的资源
requests.post('https://www.baidu.com/')      # POST请求:    请求向url位置的资源后附加新的数据
requests.put('https://www.baidu.com/')       # PUT请求:     请求向url位置存储一个资源,覆盖该位置的原有资源
requests.delete('https://www.baidu.com/')    # DELETE请求:  请求删除url位置存储的资源
requests.head('https://www.baidu.com/')      # HEAD请求:    请求获取url位置的资源的头部信息
requests.patch('https://www.baidu.com/')        # PATCH请求:   请求局部更新url位置的资源
requests.options('https://www.baidu.com/')   # OPTIONS请求: 测试服务器是否真的接受请求数据
requests.request()                           # 构造一个请求,适用于以下的各种请求方法
    requests.request(method,url,**kwargs)
        # method:请求方式,对应get/put/post等7种
        # url:拟获取页面的url链接
        # **kwargs:控制访问的参数,共13个

3 - 为url传递参数

(1)get方法传参
url_params = {'key':'value'}
r = requests.get('your url',params = url_params)            # 相当于your url?key=value

(2)post方法传参 使用data参数接受字典参数,request会自动将字典转换成json的请求体数据

4 - 请求的响应结果

复制代码
r = requests.get('your url',params = url_params)
r.encoding                          # 获取当前的编码
r.encoding = 'utf-8'             # 设置编码
r.apparent.encoding              # 从内容中分析出的响应内容编码方式(备选编码方式)
r.status_code                    # 响应状态码
r.raw                            # 返回原始响应体,也就是 urllib 的 response 对象,使用 r.raw.read()
r.ok                             # 查看r.ok的布尔值便可以知道是否登陆成功
r.raise_for_status()             # 失败请求(非200响应)抛出异常
r.text                           # 以encoding解析返回内容。字符串方式的响应体,会自动根据响应头部的字符编码进行解码
r.content                        # 以字节形式(二进制)返回。字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩
r.headers                        # 以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
r.json()                         # Requests中内置的JSON解码器,以json形式返回,前提返回的内容确保是json格式的,不然解析出错会抛异常
复制代码

5 - post发送json请求

r = requests.post('https://api.github.com/some/endpoint', data=json.dumps({'some': 'data'}))
print(r.json())

6 - 定制头和cookie信息

header = {'user-agent': 'xxxxxxxxxxxxxxx'}
cookie = {'key':'value'}
r = requests.get/post('url',headers=header,cookies=cookie)
data = {'some': 'data'}
headers = {'content-type': 'application/json',
           'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'}
 
r = requests.post('https://api.github.com/some/endpoint', data=data, headers=headers)
print(r.text)

7 - 超时

r = requests.get('url',timeout=1)           #设置秒数超时,仅对于连接有效

8 - 会话对象,能够跨请求保持某些参数

s = requests.Session()
s.auth = ('auth','passwd')
s.headers = {'key':'value'}
r = s.get('url')
r1 = s.get('url1')

9 - 代理

复制代码
proxies = {'http':'ip1','https':'ip2' }
requests.get('url',proxies=proxies)
        #设置访问代理
        proxies = {
                   "http": "http://10.10.1.10:3128",
                   "https": "http://10.10.1.100:4444",
                  }
        r = requests.get('http://m.ctrip.com', proxies=proxies)


        #如果代理需要用户名和密码,则需要这样:
        proxies = {
            "http": "http://user:pass@10.10.1.10:3128/",
        }
复制代码

10 - 异常处理

复制代码
import requests

URL = 'http://ip.taobao.com/service/getIpInfo.php'  # 淘宝IP地址库API
try:
    r = requests.get(URL, params={'ip': '8.8.8.8'}, timeout=1)
    r.raise_for_status()  # 如果响应状态码不是 200,就主动抛出异常
except requests.RequestException as e:
    print(e)
else:
    result = r.json()
    print(type(result), result, sep='\n')
复制代码

11 - 上传文件

import requests
 
url = 'http://127.0.0.1:8080/upload'
files = {'file': open('/home/rxf/test.jpg', 'rb')}
#files = {'file': ('report.jpg', open('/home/lyb/sjzl.mpg', 'rb'))}     #显式的设置文件名
 
r = requests.post(url, files=files)
print(r.text)
#request更加方便的是,可以把字符串当作文件进行上传:
import requests
url = 'http://127.0.0.1:8080/upload'
files = {'file': ('test.txt', b'Hello Requests.')}     #必需显式的设置文件名
 
r = requests.post(url, files=files)
print(r.text)

12 - 身份验证

复制代码
基本身份认证(HTTP Basic Auth)

import requests
from requests.auth import HTTPBasicAuth
 
r = requests.get('https://httpbin.org/hidden-basic-auth/user/passwd', auth=HTTPBasicAuth('user', 'passwd'))
# r = requests.get('https://httpbin.org/hidden-basic-auth/user/passwd', auth=('user', 'passwd'))    # 简写
print(r.json())

-----------------------------------------------------------------------
另一种非常流行的HTTP身份认证形式是摘要式身份认证,Requests对它的支持也是开箱即可用的:
requests.get(URL, auth=HTTPDigestAuth('user', 'pass')
复制代码

13 - 示例

import requests

# '''requests模块抓取网页源码并保存到文件示例'''
html = requests.get("http://www.baidu.com")
with open('test.txt', 'w', encoding='utf-8') as f:
    f.write(html.text)

 

posted @   映辉  阅读(143)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示