抓取頁面數(shù)據(jù)的時候,有時候我們需要登陸才可以獲取頁面資源,那么我們需要登陸以后才可以跳轉(zhuǎn)到對應(yīng)的資源頁面,那么我們需要通過模擬登陸,登陸成功以后再次去抓取對應(yīng)的數(shù)據(jù)。 首先我們需要通過手動方式來登陸一下,查看一下如何請求登陸 通過下圖我們看到真正處理請求的頁面是login.php,登陸成功以后跳轉(zhuǎn)到index.php頁面,下面我們來模擬一下。 代碼實(shí)現(xiàn) LOGIN_URL = 'http://yingxiao./login.php' #請求的URL地址DATA = {"username":'accountID',"passwd":'passwd'} #登錄系統(tǒng)的賬號密碼,也是我們請求數(shù)據(jù)HEADERS = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36' #模擬登陸的瀏覽器 } RES = requests.post(LOGIN_URL,data=DATA,headers=HEADERS) #模擬登陸操作print (RES.text) #打印返回的文本信息 下來我們請求其他的頁面看一下效果 RES1 = requests.get("http://yingxiao./show.php?id=64621190")print(RES1.text) 此時我們登陸成功再次請求其他的頁面的時候,發(fā)現(xiàn)無法請求到對應(yīng)的頁面,意味到剛才的模擬登陸只對當(dāng)前的操作起作用,那么如何使用下面的請求繼續(xù)有效。實(shí)際過程中我們知道session過期,我們需要重新登陸,那么我們第一次登陸成功session,只對當(dāng)前有效,所以我們再次登錄就登陸失敗,那么我們需要在session有效期內(nèi),把session保存,然后再次去請求其他的頁面。 def Get_Session(URL,DATA,HEADERS): '''保存登錄參數(shù)''' ROOM_SESSION = requests.Session() ROOM_SESSION.post(URL,data=DATA,headers=HEADERS) return ROOM_SESSION SESSION =Get_Session(LOGIN_URL,DATA,HEADERS)# 保存session后再次請求對應(yīng)的地址RES2 = SESSION.get("http://yingxiao./show.php?id=64621190")print(RES2.text) 此時我們看到已經(jīng)可以請求到對應(yīng)的頁面了。 |
|