自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

基礎(chǔ)篇Python發(fā)送Get請(qǐng)求之如何放請(qǐng)求頭、參數(shù)、獲取返回內(nèi)容

開(kāi)發(fā) 后端
本篇文章寫的是用代碼發(fā)送簡(jiǎn)單的 get 請(qǐng)求,我有自己整理筆記的習(xí)慣,雖然網(wǎng)上這類的教程很多,但是坑也很多,自己寫的自己看放心一些。

 [[381530]]

目錄

  • 一、Python 命名規(guī)范
  • 二、發(fā)送 get 請(qǐng)求
    • 1.安裝 requests
    • 2.發(fā)送 get 請(qǐng)求
    • 3.如何判斷發(fā)送 get 請(qǐng)求要不要傳請(qǐng)求頭部?
    • 4.傳入請(qǐng)求頭
    • 5.權(quán)限被拒:403 - Forbidden: Access is denied
  • 三、response 的返回內(nèi)容還有其它更多信息

一、Python 命名規(guī)范

  • 1.是英文字符、下劃線__、數(shù)字三個(gè)組成。
  • 2.項(xiàng)目(工程)名稱、文件包名、模塊名稱等是英文開(kāi)頭,不能純數(shù)字,下劃線開(kāi)頭的有特殊含義,不能亂用。
  • 3.腳本的名稱不能跟系統(tǒng)的模塊或第三方模塊重復(fù),例如requests/unittest/selenium等。
  • 4.函數(shù)、類、方法、參數(shù)的名稱不能和系統(tǒng)現(xiàn)有的名稱重復(fù)。
  • 5.類名稱必須大寫字母開(kāi)頭。除了類名稱,其它地方都用小寫開(kāi)頭。命名規(guī)范最好遵守駝峰法和下劃線法,例如:qingHan、qing_han
  • 6.不要用中文、特殊字符(:;@等),有些特殊字符是有特殊作用的。

二、發(fā)送 get 請(qǐng)求

1.安裝 requests

cmd 中安裝 requests:

安裝:pip install requests

卸載:pip uninstall requests

查看:pip list

切記安裝的時(shí)候把抓包工具關(guān)了。

如果安裝報(bào)錯(cuò) timeout,因?yàn)闆](méi) fq,可以這樣裝:

  1. pip install -i http://mirrors.aliyun.com/pypi/simple/ requests 

附上國(guó)內(nèi)常見(jiàn)的鏡像源

  1. 阿里云 http://mirrors.aliyun.com/pypi/simple/
  2. 中國(guó)科技大學(xué) https://pypi.mirrors.ustc.edu.cn/simple/
  3. 豆瓣(douban) http://pypi.douban.com/simple/
  4. 清華大學(xué) https://pypi.tuna.tsinghua.edu.cn/simple/
  5. 中國(guó)科學(xué)技術(shù)大學(xué) http://pypi.mirrors.ustc.edu.cn/simple/

requests 官方文檔:https://requests.readthedocs.io/zh_CN/latest/

2.發(fā)送 get 請(qǐng)求

一個(gè)完整的 get 請(qǐng)求,應(yīng)該包括請(qǐng)求行(url)和請(qǐng)求頭(headers)、請(qǐng)求參數(shù)(params)。

  1. import  requests 
  2.  
  3. # get請(qǐng)求:url+params請(qǐng)求參數(shù) 
  4. url="http://v.juhe.cn/laohuangli/d" 
  5.  
  6. # params  建議參數(shù)單獨(dú)拿出來(lái),這樣寫 
  7. p={"key":"abf91475fc19f66c2f1fe567edd75257"
  8. "date":"2014-09-11"
  9. a=requests.get(url,params=p)  #發(fā)請(qǐng)求 
  10. print(a.status_code)#狀態(tài)碼 
  11. print(a.text)#raw 文本內(nèi)容 
  12. print(a.headers)#dict 
  13. print(a.headers['Date'])#key 
  14. print(a.cookies)#RequestsCookieJar 

3.如何判斷發(fā)送 get 請(qǐng)求要不要傳請(qǐng)求頭部?

先在 fiddler 中去掉請(qǐng)求頭部,用這個(gè)接口發(fā)下請(qǐng)求試試,如果是正常返回 200 就可以不傳頭部,如果在工具中發(fā)送請(qǐng)求后,提示 403 - Forbidden: Access is denied,那么就需要傳頭部。

請(qǐng)求頭中那么多參數(shù),哪些參數(shù)需要呢?

在工具中把請(qǐng)求頭中的參數(shù)挨個(gè)刪掉試試,不行的話就要加上了。

 

這個(gè)是看開(kāi)發(fā)怎么實(shí)現(xiàn)的了,自己寫接口自動(dòng)化代碼的時(shí)候最好寫上請(qǐng)求頭,這樣規(guī)范一些。

4.傳入請(qǐng)求頭

頭部寫成字典格式,headers=headers,傳入請(qǐng)求頭。

有些響應(yīng)內(nèi)容是 gzip 壓縮的,text 只能打印文本內(nèi)容,用 content 是二進(jìn)制流。一般獲取返回值內(nèi)容,推薦用 content。

  1. import  requests 
  2. url="https://www.baidu.com" 
  3.  
  4. # 構(gòu)建請(qǐng)求頭 
  5. headers = { 
  6.     'User-Agent''Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36' 
  7.  
  8. r=requests.get(url,headers=headers) 
  9. print(r.status_code) 
  10. print(r.text)# html亂碼 
  11. print(r.content.decode("utf-8"))  #decode解壓縮展示中文 

5.權(quán)限被拒:403 - Forbidden: Access is denied

url 和請(qǐng)求參數(shù)都對(duì),卻沒(méi)權(quán)限??赡茉颍悍?wù)器識(shí)別到你是代碼請(qǐng)求的,防腳本機(jī)制。

解決辦法:需要身份驗(yàn)證,代碼中的請(qǐng)求頭部加上 cookies)。例如:

圖片來(lái)自網(wǎng)絡(luò)

 

三、response 的返回內(nèi)容還有其它更多信息

  • a.status_code 響應(yīng)狀態(tài)碼。
  • a.content 字節(jié)方式的響應(yīng)體,會(huì)自動(dòng)為你解碼 gzip 和 eflate 壓縮。
  • a.headers 以字典對(duì)象存儲(chǔ)服務(wù)器響應(yīng)頭,但是這個(gè)字典比較特殊,字典鍵不區(qū)分大小寫,若鍵不存在則返回 None。
  • a.json() Requests 中內(nèi)置的 JSON 解碼器 ,json 轉(zhuǎn)成 python 的字典了。
  • a.url 獲取 url。
  • a.encoding 編碼格式。
  • a.cookies 獲取返回的 cookie。
  • a.text字符串方式的響應(yīng)體,會(huì)自動(dòng)根據(jù)響應(yīng)頭部的字符編碼進(jìn)行解碼。
  • a.raise_for_status() 失敗請(qǐng)求(非 200 響應(yīng))拋出異常。

注:本篇文章寫的是用代碼發(fā)送簡(jiǎn)單的 get 請(qǐng)求,我有自己整理筆記的習(xí)慣,雖然網(wǎng)上這類的教程很多,但是坑也很多,自己寫的自己看放心一些。不喜勿噴,如有需要,自行抱走,后續(xù)會(huì)更新深入一些的文章。

本文轉(zhuǎn)載自微信公眾號(hào)「清菡軟件測(cè)試」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系清菡軟件測(cè)試公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: 清菡軟件測(cè)試
相關(guān)推薦

2020-10-09 08:29:24

POSTGET參數(shù)

2024-07-26 08:53:09

前端參數(shù)后端

2021-02-14 23:01:16

Python參數(shù)請(qǐng)求

2023-11-27 08:57:24

GoGET

2021-03-06 09:54:22

PythonHTTP請(qǐng)求頭

2015-10-27 11:06:51

PHPGETPOST

2015-08-06 13:33:22

PHPGETPOST

2022-11-22 08:41:22

curlDELETELinux

2009-06-06 19:25:44

javaServlet基礎(chǔ)結(jié)構(gòu)

2024-09-29 10:46:01

2021-12-03 09:49:59

鴻蒙HarmonyOS應(yīng)用

2025-02-06 08:09:20

POSTGET數(shù)據(jù)

2009-07-09 14:56:23

Servlet讀取

2019-12-23 11:02:12

HTTP請(qǐng)求頭網(wǎng)絡(luò)協(xié)議

2025-04-07 11:00:00

FastAPI路徑參數(shù)接口

2011-08-03 14:33:54

IOS4.2 HTTP 請(qǐng)求

2013-03-28 14:11:10

iOS異步GET方法請(qǐng)

2021-06-17 09:32:39

重復(fù)請(qǐng)求并發(fā)請(qǐng)求Java

2021-03-27 22:21:48

HTTPPython數(shù)據(jù)

2021-08-26 06:58:14

Http請(qǐng)求url
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)