import requests
print(dir(requests))
# 2、參數(shù)
requests.get(
url="http://www.baidu.com",
headers="",
cookies="",
params={"k1":"v1","k2":"v2"},
# url中傳遞的參數(shù),效果如下
# http://www.baidu.com?k1=v1&k2=v2
)
requests.post(
url="",
headers="",
cookies="",
data={
},
params={"k1": "v1", "k2": "v2"},
# url中傳遞的參數(shù),效果如下
# http://www.baidu.com?k1=v1&k2=v2
)
# 我們可以通過(guò)data傳遞請(qǐng)求體,也可以通過(guò)json傳遞請(qǐng)求體
data = {
"username":"admin",
"pwd":"admin"
},
# 則請(qǐng)求體中的數(shù)據(jù)為username=admin&pwd=admin
# 參數(shù)代理
# 定義一個(gè)字典
proxies = {
"http": "http://127.0.0.1:8888",
"https": "http://127.0.0.1:8888",
}
# http請(qǐng)求走h(yuǎn)ttp對(duì)應(yīng)的地址,https請(qǐng)求走h(yuǎn)ttps對(duì)應(yīng)的地址,在訪問(wèn)的請(qǐng)求中加一個(gè)proxies的參數(shù)
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
)
# 給代理加認(rèn)證
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請(qǐng)求走h(yuǎn)ttp對(duì)應(yīng)的地址,https請(qǐng)求走h(yuǎn)ttps對(duì)應(yīng)的地址,在訪問(wèn)的請(qǐng)求中加一個(gè)proxies的參數(shù),在加一個(gè)參數(shù)auth,這個(gè)是登陸代理的用戶名和密碼
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
)
# 參數(shù)文件上傳,post方法發(fā)送請(qǐng)求,傳遞一個(gè)file的參數(shù)
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
)
# 參數(shù)認(rèn)證
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")
)
# 超時(shí)參數(shù)
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
)
# 超時(shí)時(shí)間為2s,2s連不上返回錯(cuò)誤
# 允許重定向
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大文件下載的參數(shù),把文件一點(diǎn)一點(diǎn)的下載,如果這個(gè)值為false,則全部寫到內(nèi)存中了
from contextlib import closing
with closing(requests.get("http://ddddddd",stream=True)) as f:
for i in f.iter_content():
print(i)
# cert,證書參數(shù),告訴request去這個(gè)地方去下載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,為我們自動(dòng)帶上cookies和請(qǐng)求頭
import requests
session = requests.session()
i1 = session.get(url="")
i2 = session.post(
url="",
data={}
)
i3 = session.post()
通過(guò)request發(fā)送post請(qǐng)求,什么時(shí)候使用data參數(shù),什么時(shí)候使用json參數(shù)呢,可以通過(guò)抓包來(lái)分析
在chrom瀏覽器中,數(shù)據(jù)格式為Form Data,如果通過(guò)requests發(fā)送數(shù)據(jù),則用data來(lái)發(fā)送數(shù)據(jù)
在chrom瀏覽器中,數(shù)據(jù)格式為Request Payload,如果通過(guò)requests發(fā)送,則用json來(lái)發(fā)送數(shù)據(jù)
如果傳遞的json格式,但是數(shù)據(jù)有中文呢就額可以使用下面的方式來(lái)發(fā)送數(shù)據(jù)
data = bytes(json.dumps(
data_dict,
ensure_ascii=False
),encoding="utf-8")
設(shè)置代理模式
設(shè)置 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')
設(shè)置 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')