import requests
print(dir(requests))
# 2、参数
requests.get(
url="http://www.baidu.com",
headers="",
cookies="",
params={"k1":"v1","k2":"v2"},
# url中传递的参数,效果如下
# http://www.baidu.com?k1=v1&k2=v2
)
requests.post(
url="",
headers="",
cookies="",
data={
},
params={"k1": "v1", "k2": "v2"},
# url中传递的参数,效果如下
# http://www.baidu.com?k1=v1&k2=v2
)
# 我们可以通过data传递请求体,也可以通过json传递请求体
data = {
"username":"admin",
"pwd":"admin"
},
# 则请求体中的数据为username=admin&pwd=admin
# 参数代理
# 定义一个字典
proxies = {
"http": "http://127.0.0.1:8888",
"https": "http://127.0.0.1:8888",
}
# http请求走http对应的地址,https请求走https对应的地址,在访问的请求中加一个proxies的参数
l1 = requests.get(url="https://passport.lagou.com/login/login.html",
headers={
"user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
},
proxies = proxies
)
# 给代理加认证
from requests.auth import HTTPProxyAuth
proxies = {
"http": "http://127.0.0.1:8888",
"https": "http://127.0.0.1:8888",
}
auth = HTTPProxyAuth("username","passwd")
# http请求走http对应的地址,https请求走https对应的地址,在访问的请求中加一个proxies的参数,在加一个参数auth,这个是登陆代理的用户名和密码
l2 = requests.get(url="https://passport.lagou.com/login/login.html",
headers={
"user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
},
proxies = proxies,
auth = auth
)
# 参数文件上传,post方法发送请求,传递一个file的参数
files = {
"pic": ("test.gif", open("test.gif", "rb"), "images/git")
}
l3 = requests.post(url="https://passport.lagou.com/login/login.html",
headers={
"user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
},
proxies = proxies,
auth = auth,
files = files
)
# 参数认证
from requests.auth import HTTPBasicAuth
from requests.auth import HTTPDigestAuth
l5 = requests.get(url="https://passport.lagou.com/login/login.html",
headers={
"user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
},
proxies = proxies,
auth = HTTPBasicAuth("admin","admin")
)
# 超时参数
l6 = requests.get(url="https://passport.lagou.com/login/login.html",
headers={
"user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
},
timeout = 2
)
# 超时时间为2s,2s连不上返回错误
# 允许重定向
l7 = requests.get(url="https://passport.lagou.com/login/login.html",
headers={
"user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
},
allow_redirects = False
)
# stream大文件下载的参数,把文件一点一点的下载,如果这个值为false,则全部写到内存中了
from contextlib import closing
with closing(requests.get("http://ddddddd",stream=True)) as f:
for i in f.iter_content():
print(i)
# cert,证书参数,告诉request去这个地方去下载cert
l8 = requests.get(url="https://passport.lagou.com/login/login.html",cert="xxx/xxx/xxx/xxx/pem")
l9 = requests.get(url="https://passport.lagou.com/login/login.html",cert=("xxx/xxx/xxx/xxx/pem","yyy/yyy/yyy.key"))
# session,为我们自动带上cookies和请求头
import requests
session = requests.session()
i1 = session.get(url="")
i2 = session.post(
url="",
data={}
)
i3 = session.post()
通过request发送post请求,什么时候使用data参数,什么时候使用json参数呢,可以通过抓包来分析
在chrom浏览器中,数据格式为Form Data,如果通过requests发送数据,则用data来发送数据
在chrom浏览器中,数据格式为Request Payload,如果通过requests发送,则用json来发送数据
如果传递的json格式,但是数据有中文呢就额可以使用下面的方式来发送数据
data = bytes(json.dumps(
data_dict,
ensure_ascii=False
),encoding="utf-8")
设置代理模式
设置 proxy
import requests
proxies = {'http': 'http://localhost:8888', 'https': 'http://localhost:8888'}
requests.get('http://example.org', proxies=proxies)
import requests
s = requests.Session()
s.proxies = {'http': 'http://localhost:8888', 'https': 'http://localhost:8888'}
requests.get('http://example.org')
设置 SSL 证书
使用文本格式的 PEM。
import requests
proxies = {'http': 'http://localhost:8888', 'https': 'http://localhost:8888'}
requests.get('http://example.org', proxies=proxies, verify='/path-to/charles-ssl-proxying-certificate.pem')
import requests
s = requests.Session()
s.proxies = {'http': 'http://localhost:8888', 'https': 'http://localhost:8888'}
s.verify='/path-to/charles-ssl-proxying-certificate.pem'
requests.get('http://example.org')