import requests print(dir(requests)) # 一、方法 # ['ConnectTimeout', 'ConnectionError', 'DependencyWarning', 'FileModeWarning', 'HTTPError', 'NullHandler', 'PreparedRequest', 'ReadTimeout', 'Request', 'RequestException', 'RequestsDependencyWarning', 'Response', 'Session', 'Timeout', 'TooManyRedirects', 'URLRequired', '__author__', '__author_email__', '__build__', '__builtins__', '__cached__', '__cake__', '__copyright__', '__description__', '__doc__', '__file__', '__license__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__title__', '__url__', '__version__', '_check_cryptography', '_internal_utils', 'adapters', 'api', 'auth', 'certs', 'chardet', 'check_compatibility', 'codes', 'compat', 'cookies', 'delete', 'exceptions', 'get', 'head', 'hooks', 'logging', 'models', 'options', 'packages', 'patch', 'post', 'put', 'request', 'session', 'sessions', 'status_codes', 'structures', 'urllib3', 'utils', 'warnings'] # 二、參數 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 # 參數json json = { "username":"admin", "pwd":"admin" }, # 則請求體中的數據爲{"username":"admin","pwd":"admin"} # 參數代理 # 定義一個字典 proxies = { "http":"61.24.25.21", "https":"http://65.21.24.1" } # 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":"61.24.25.21", "https":"http://65.21.24.1" } 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的參數 file= { "f1":open("a.txt","rb") } 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, file = file ) # 能夠設置上傳文件的名稱,前面的例子上傳的文件的名稱就是文件自己的名稱 file= { "f1":("new_file_name",open("a.txt","rb")) } l4 = 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, file = file ) # 參數認證 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()
----------------------------------------------------------html
經過request發送post請求,何時使用data參數,何時使用json參數呢,能夠經過抓包來分析python
在chrom瀏覽器中,數據格式爲Form Data,若是經過requests發送數據,則用data來發送數據json
在chrom瀏覽器中,數據格式爲Request Payload,若是經過requests發送,則用json來發送數據api
若是傳遞的json格式,可是數據有中文呢就額能夠使用下面的方式來發送數據瀏覽器
data = bytes(json.dumps( data_dict, ensure_ascii=False ),encoding="utf-8")