python requests 模擬登陸網站,抓取數據


抓取頁面數據的時候,有時候我們需要登陸才可以獲取頁面資源,那么我們需要登陸以后才可以跳轉到對應的資源頁面,那么我們需要通過模擬登陸,登陸成功以后再次去抓取對應的數據。

首先我們需要通過手動方式來登陸一下,查看一下如何請求登陸

通過下圖我們看到真正處理請求的頁面是login.php,登陸成功以后跳轉到index.php頁面,下面我們來模擬一下。

代碼實現

LOGIN_URL = 'http://yingxiao.chewumi.com/login.php'  #請求的URL地址
DATA = {"username":'accountID',"passwd":'passwd'}   #登錄系統的賬號密碼,也是我們請求數據

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.chewumi.com/show.php?id=64621190")
print(RES1.text)

 此時我們登陸成功再次請求其他的頁面的時候,發現無法請求到對應的頁面,意味到剛才的模擬登陸只對當前的操作起作用,那么如何使用下面的請求繼續有效。實際過程中我們知道session過期,我們需要重新登陸,那么我們第一次登陸成功session,只對當前有效,所以我們再次登錄就登陸失敗,那么我們需要在session有效期內,把session保存,然后再次去請求其他的頁面。

def Get_Session(URL,DATA,HEADERS):
    '''保存登錄參數'''
    ROOM_SESSION  = requests.Session()
    ROOM_SESSION.post(URL,data=DATA,headers=HEADERS)
    return ROOM_SESSION

SESSION =Get_Session(LOGIN_URL,DATA,HEADERS)
# 保存session后再次請求對應的地址
RES2 = SESSION.get("http://yingxiao.chewumi.com/show.php?id=64621190")
print(RES2.text)

此時我們看到已經可以請求到對應的頁面了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM