0
点赞
收藏
分享

微信扫一扫

python requests库 总结

Star英 2022-11-02 阅读 236


python requests

​​官方文档​​

一、介绍

Requests 是⽤Python语⾔编写,基于urllib,采⽤Apache2 Licensed开源协议的 HTTP 库。它⽐ urllib 更加⽅便,可以节约我们⼤量的⼯作,完全满⾜HTTP测试需求。

⼀句话——Python实现的简单易⽤的HTTP库

二、基本用法

1. 实例

用 GET方法请求网页,得到一个 response 对象,并返回类型,状态码,响应体类型、内容、cookies。

import requests

r = requests.get('https://www.baidu.com/')
print(type(r)) # response类型
print(r.status_code) # 状态码
print(type(r.text)) # 相应体内容
print(r.text) # 内容
print(r.cookies) # cookies
print(type(r.headers), r.headers) # 响应头
print(type(r.url), r.url) # 请求地址
print(type(r.history), r.history) # 请求历史

其他请求类型的实现:

import requests

r = requests.post('http://httpbin.org/post')
r = requests.put('http://httpbin.org/put')
r = requests.delete('http://httpbin.org/delete')
r = requests.head('http://httpbin.org/head')
r = requests.options('http://httpbin.org/options')

2. GET 方法(参数的使用)

  • 附加额外信息(params)

import requests
data = {
'name' : 'germey',
'age' : 22
}
r = requests.get('http://httpbin.org/get', params=data)
print(r.text) # json 格式的字符串
print(r.json()) # 将 json 格式的字符串 转字典

  • 添加请求头

import requests
headers = {
'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
}
# 加入请求头
r = requests.get('http://www.zhihu.com/explore', headers=headers)

  • 抓取二进制文件(写入文件)

import requests
import re
r = requests.get('http://www.github.com/favicon.ico')
print(r.text) # str 类型 (两种属性)
print(r.content) # 字节类型
with open('favicon.ico', 'wb') as f:
f.write(r.content)

三、高级用法

1.文件上传

import requests
import re

files = {
'file' : open('favicon.ico', 'rb')
}
r = requests.post('http://httpbin.org/post', files=files)
print(r.text)

2. Cookies

获取 Cookies

import requests

r = requests.get('https://www.baidu.com')
print(r.cookies)
for key, value in r.cookies.items():
print(key + '=' + value)

可以用 cookies 维持登陆状态,先登录,再将 cookies 复制下来当作 headers

3. 会话维持

Session 对象会帮助我们维护一个会话。经常用于在同一个浏览器打开不同页面。

import requests

s = requests.Session()
r = s.get('http://httpbin.org/cookies/set/number/123456789')
print(r.text)

4. 代理设置

import requests

# http 代理
proxies = { # 代理地址只是举例子
"http" : "http://10.10.1.10:3128",
"https" : "http://10.10.1.10.1080",
}

# 需要认证的:
proxies = { # 代理地址只是举例子
"http" : "http://user:password@10.10.1.10:3128",
}

# socks 代理
proxies = { # 代理地址只是举例子
"http" : "socks5://user:password@host:port",
}

requests.get('http://www.taobao.com', proxies=proxies)

5. 超时设置

防止服务器不能及时响应,设置一个超时时间。要用到 timeout 参数,意义为发出请求到服务器返回响应的时间。

请求分为两个阶段:连接 读取,可以用元组分别设置时间

import requests

r = requests.get('http://www.taobao.com', timeout=(5.11, 30))


举报

相关推荐

0 条评论