接口中咱們常常須要用到參數關聯,好比,登陸token,須要傳給後面的參數使用,又好比要查看某個商品須要將商品的id傳入下一個接口使用。html
等等,因此咱們必要學會 re 正則獲取,或者返回json獲取,我的認爲 re 挺實用的。json
一、手工操做抓包,能夠看到下圖一個 uid 每次操做關閉需求都會不同,即爲動態參數。那咱們怎樣知道這個 uid 在哪裏獲取呢?session
二、查看上一個接口中,不難發現其 uid 就在上一個接口中。post
三、既然知道了 uid 在上一個接口中,那麼咱們就能夠經過 re 提取。ui
步驟:編碼
①發送第一個接口,re 提取出 uid。url
②下一個接口,在傳參的時候,格式化輸出管理該參數,發送請求便可,以下:spa
import re import requests s = requests.session() # 禪道登陸 url = 'http://127.0.0.1:81/zentao/user-login-L3plbnRhby8=.html' par = 'account=admin&password=e10adc3949ba59abbe56e057f20f883e&keepLogin%5B%5D=on&referer=%2Fzentao%2F' r = s.post(url, params=par) # 查需求的 kuid 接口 r2 = s.get('http://127.0.0.1:81/zentao/story-close-2.html?onlybody=yes') b = r2.content.decode('utf-8') kuid = re.findall('kuid = "(.+?)"', b) # 注意編碼格式,不然亂碼 print('獲取的kuid爲:%s' % kuid[0]) # kuid[0]則是提供下一個接口關聯的參數 # 關閉需求,%s 格式化輸出,關聯上面接口獲取的kuid url = 'http://127.0.0.1:81/zentao/story-close-4.html?onlybody=yes' par1 = 'closedReason=done&duplicateStory=&childStories=&comment=&uid=%s' % kuid[0] print(par1) r3 = s.post(url, params=par1)
一、取中間:(.+?)3d
import re st = "我是一隻小小鳥,怎麼飛也飛不高?" # 取中間「小鳥」,取出來的是list。 s = re.findall('小(.+?),', st) print(s[0])
二、取尾:(.+?)$code
import re st = "我是一隻小小鳥,怎麼飛也飛不高?" # 取尾,逗號後面的所有。 s = re.findall(',(.+?)$', st) print(s[0])
三、取前:^(.+?)
import re st = "我是一隻小小鳥,怎麼飛也飛不高?" # 取前,逗號前面的所有。 s = re.findall('^(.+?),', st) print(s[0])
你學會了嗎?歡迎來QQ交流羣:482713805