10000条代码Planning⑮

Requests库——HTTP请求库,用于发送所有种类的HTTP请求。它提供了简单易用的接口,支持各种HTTP方法,处理常见的HTTP操作,比如重定向、保持会话、处理Cookies、上传文件等。

#requests库的导入
import requests

##requests库的基本信息
print("版本:", requests.__version__)
print("许可证:", requests.__license__)
print("版权:", requests.__copyright__)
print("作者:", requests.__author__)
print("作者邮箱:", requests.__author_email__)
print("文档url:", requests.__url__)
print("标题:", requests.__title__)
print("描述:", requests.__description__)

##requests库的应用:发送get请求
HTTP='http://www.baidu.com/' #访问网址
r=requests.get(HTTP)
#http状态信息
print(r.status_code)    #结果:'200'
#http响应文本,打印响应内容(HTML), 以字符串形式返回响应内容。
print(r.text)
#http响应,以字节形式返回响应内容。
print(r.content)
"""
常见的HTTP状态信息:
200-请求成功
301-资源(网页等)被永久转移到其他URL
404-请求的资源(网页等)不存在
500-内部服务器错误
"""

##requests库的应用:发送post请求
import requests
data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://www.example.com/post', data=data)
print(response.status_code)
print(response.json())  # 假设服务器返回的是JSON格式数据

#http头信息headers
print(r.headers)    # 返回响应头信息。
#print(type(r.headers))  #结果是:'<class 'requests.structures.CaseInsensitiveDict'>'
for k,v in r.headers.items():   #与字典一样用法
    print(k,v)

#http的json信息
#原代码
#data=r.json()
#print(f'结果: {data}')    #报错:'requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)'
"""
这个错误通常意味着 r.json() 方法试图解析一个空响应。
可能的原因是请求返回了空内容,或者返回的内容不是有效的 JSON 格式。
"""
#更改代码
try:
    data=r.json()   #将响应内容解析为JSON格式(如果内容是JSON格式)。
    print(f'结果: {data}')
except requests.exceptions.JSONDecodeError as e:
    print(f'报错:{e}')    #结果是:'报错:Expecting value: line 1 column 1 (char 0)'

##requests的get方法
import requests as r
rh=r.get('http://www.baidu.com/')
print(rh.text)
"""
requests.get()
一些常用的参数:
1.timeout:参数指定了在请求过程中等待服务器响应的最长时间,单位是秒。如果在指定的时间内没有收到响应,请求将会被中断,并且会抛出一个 Timeout 异常。
2.headers: 请求头,可以用来传递一些 HTTP 请求头信息,如 User-Agent 等。
3.cookies: 请求中的 cookies,可以用来传递一些 cookie 信息。
4.auth: 请求的身份认证信息,可以是 HTTPBasicAuth 或 HTTPDigestAuth 对象。
5.proxies: 代理设置,可以用来指定请求时使用的代理。
6.verify: 是否验证 SSL 证书。
7.cert: 客户端证书,用于双向认证。
8.stream: 是否使用流式响应。
9.allow_redirects: 是否允许重定向。
10.params: 查询参数,用于构造 URL 查询字符串。
11.json: 请求体中的 JSON 数据,用于发送 POST 请求时的数据。
这些参数可以根据实际需求进行设置,以便更好地控制和定制请求的行为。
"""

##requests请求:避免乱码
import requests
r = requests.get('https://www.baidu.com/')
"""
将响应的编码设置为从响应内容自动检测到的编码
这样可以确保接下来的文本操作能够正确显示中文字符
"""
r.encoding = r.apparent_encoding
print(r.text)

为什么使用r.encoding = r.apparent_encoding
        requests库在获取HTTP响应时,默认会根据HTTP头中的Content-Type字段来设置响应的编码。然而,有时候服务器没有正确设置编码,或者默认的编码不能正确解码响应内容。
这种情况下,直接使用默认编码可能会导致中文等非ASCII字符显示为乱码。

Note:
请求参数

在发送请求时,可以通过各种参数来定制请求:

  • params: 用于GET请求的查询参数,传递一个字典。

    params = {'key1': 'value1', 'key2': 'value2'}
    response = requests.get('https://www.example.com', params=params)
  • data: 用于POST请求的表单数据,传递一个字典。

    data = {'key1': 'value1', 'key2': 'value2'}
    response = requests.post('https://www.example.com/post', data=data)
  • json: 发送JSON格式的数据。

    json_data = {'key1': 'value1', 'key2': 'value2'}
    ​​​​​​​response = requests.post('https://www.example.com/post', json=json_data)
  • headers: 自定义请求头。

    headers = {'User-Agent': 'my-app/0.0.1'}
    response = requests.get('https://www.example.com', headers=headers)
  • cookies: 发送自定义的Cookies。

    cookies = {'session_id': '123456789'}
    response = requests.get('https://www.example.com', cookies=cookies)
  • timeout: 设置请求超时时间。

    response = requests.get('https://www.example.com', timeout=5) # 超时时间为5秒
处理文件上传
import requests
files = {'file': open('report.xls', 'rb')}
response = requests.post('https://www.example.com/upload', files=files) print(response.status_code)
会话对象

使用会话对象可以跨请求保持某些参数,比如Cookies和HTTP头。

import requests

s = requests.Session()
s.get('https://www.example.com/cookies/set/sessioncookie/123456789')
response = s.get('https://www.example.com/cookies')
print(response.text)

高级功能

身份验证

requests库支持多种身份验证方式,如HTTP基本认证、摘要认证等。

from requests.auth import HTTPBasicAuth

response = requests.get('https://www.example.com', auth=HTTPBasicAuth('user', 'pass'))
print(response.status_code)
处理重定向

默认情况下,requests库会自动处理重定向。

response = requests.get('https://www.example.com/redirect')
print(response.url)  # 最终重定向的URL

可以通过allow_redirects参数禁用重定向。

response = requests.get('https://www.example.com/redirect', allow_redirects=False)
print(response.status_code)  # 应该是3xx重定向状态码

如果你真的想当程序员那么就先写一万条代码。……《向上生长》
14号写下61条代码

目标:10,000条

剩余:9,128条

总结:

还没实操应用。(走的很慢可以,但是真的不能停下来学习。)

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值