【code】request庫高級用法

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()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章