request庫高級用法
代理服務器、設置cookies、prepare_request、上傳文件、下載圖片
會話維持、SSL證書
#http://docs.python-requests.org
import requests
from requests import Request
#獲取圖片
def get_picture():
url='https://github.com/favicon.ico'
r=requests.get(url)
with open('favicon.ico','wb') as f:
f.write(r.content)
#上傳文件
def post_file():
url='https://httpbin.org/post'
files={'file':open('favicon.ico','rb')}
r=requests.post(url,data=files)
if r.status_code==requests.codes.ok:
print(r.text)
#設置cookies
def set_cookies():
url='http://www.zhihu.com'
headers={'User-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36',
'cookie':'_xsrf=bXqNPk44K4q2Ucpv5cUtPbGsZQCxX5Cd; _zap=b7570aaf-16b2-4ba4-a666-e508787f4b04; d_c0="AHAv5NiuchCPTu8QCsnKLJVrLxkzPJNfxXQ=|1575354152"; Hm_lvt_98beee57fd2ef70ccdd5ca52b9740c49=1581229478,1581653375,1581990300,1582114851; Hm_lpvt_98beee57fd2ef70ccdd5ca52b9740c49=1582114851; KLBRSID=cdfcc1d45d024a211bb7144f66bda2cf|1582114851|1582114849; capsion_ticket="2|1:0|10:1582114851|14:capsion_ticket|44:MzA2MmQ2NTcxMDBlNDI4ZWJjODJjYzI5MWZhOWFmZmM=|73f6eab16d845c7b44ea3aa50fd3938ddcba215e21e2fe1efa2bcaa96651d7b7',
'host':'www.zhihu.com'}
r=requests.get(url,headers=headers)
if r.status_code==requests.codes.ok:
print(r.text)
#Session ,可以做到模擬同一個會話而不用擔心 Cookies 的問題。
# 它通常用於模擬登錄 成功之後再進行下一步的操作。
# 模擬在一個瀏覽器中打開同一站點的不同頁面
def keep_Session():
url='http://httpbin.org/cookies/set/number/12345678'
session=requests.Session()
session.get(url)
r=session.get('http://httpbin.org/cookies')
print(r.text)
#SSL證書驗證
#現在12306有CA認證的證書了,且requests函數沒有varify參數了。
def ssl_verify():
url='https://www.12206.cn'
r=requests.get(url)
print(r.status_code)
#代理設置沒找到HTTP免費代理emmm.
#若代理需要使用 HTTP Basic Auth,可以使用類似 http://user: password@host: port這樣的語法來設 置代理,示例如下:
#import requ巳sts
#proxies = { "http”:”http://user:[email protected]:3128/”}
# requests . get(https://www.taobao.com”, proxies=proxies)
def set_proxies():
url='http://www.baidu.com'
proxies={
'http':'IP:port',
'https':'IP:port'
}
r=requests.get(url,proxies=proxies)
print(r.status_code)
#身份認證
def id_auth():
url='https://www.zhihu.com'
#下面的username和password應該填知乎的賬號及密碼
#使用本機端口的話,得了解一下Linux或window網絡編程
r=requests.get(url,auth=('username','password'))
print(r.status_code)
#構成請求部分的數據結構 就像urllib裏的Request對象
# 本庫中Request-----Prepared Request
def make_Request():
url='http://httpbin.org/post'
data={'name':'yue',
'age':'21'}
headers={
'User-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36'
}
request=Request(method='POST',url=url,headers=headers,data=data)
s=requests.Session()
#通過s.prepare_request(request)將Request對象轉化爲Prepared Request對象
prepare=s.prepare_request(request)
r=s.send(prepare)
print(r.status_code)
print(r.text)
if __name__ == "__main__":
#get_picture()
#post_file()
#set_cookies()
#keep_Session()
#ssl_verify()
#set_proxies()
#id_auth()
#make_Request()