2017-10-10 28 views
0

在Python,我想保持Cookies和使用cookie要發送GET請求第二次,獲取JSON數據。爲什麼使用。做集餅乾我需要保持國家或餅乾蟒蛇,十個分量的狀態下使用

import requests 
import pprint 

url = 'https://shoapi.xxx.com/api/method/login' 
headers = {'User-Agent': 'Mozilla/5.0'} 
payload = {'usr':'@gmail.com','pwd':'mh'} 
response = requests.request("POST", url,headers=headers,data=payload) 
response_data_json = response.json() 


print("") 
print("") 
print(type(response.text)) 
pprint.pprint(response.text) 
print("") 
print("") 
print("-----------Header---------------") 
pprint.pprint(response.headers) 
headers=response.headers 
print("-----------End of Header---------------------------") 
print("") 
print("") 
print(type(response_data_json)) 

pprint.pprint(response_data_json) 


print("---------------------------")  

回答

1

如果您對POST使用requests.Session,併爲後續GET請求重複使用相同的會話實例,會話將被維護,併爲您處理cookie。

mysession = requests.Session() 
data = {'login': 'mylogin', 'pass': 'mypass'} 
mysession.post(myurl, data=data) 

mysession.get(myurl2) #uses logged in session with cookies as set 
mysession.get(myurl3) #reuses session again 

所以,你需要保持狀態,而不是使用SET-餅乾,除非你真的要處理這些事情自己

+0

403錯誤根據HTTP規範是「禁止」。這可能意味着以下兩種情況之一:要麼登錄的用戶禁止訪問URL(嘗試使用瀏覽器進行測試),要麼拒絕用戶代理(如「python-requests」)。如果這些用戶代理被禁止,那麼如果您將用戶代理字符串設置爲與Firefox等瀏覽器使用的字符串相同,那麼您的腳本可能會起作用。 – jdoer1997

+0

對於該用戶,我可以登錄其不被禁止。 (用瀏覽器測試過),請提供「用戶代理字符串」示例代碼/ Example –

+0

難道是因爲您登錄到的網站服務器(shoapi.erpnext.com)與您嘗試訪問的網站服務器不同來自(gps.erpnext.com)? – jdoer1997