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

抓取頁面數據的時候,有時候咱們須要登錄才能夠獲取頁面資源,那麼咱們須要登錄之後才能夠跳轉到對應的資源頁面,那麼咱們須要經過模擬登錄,登錄成功之後再次去抓取對應的數據。php

首先咱們須要經過手動方式來登錄一下,查看一下如何請求登錄瀏覽器

經過下圖咱們看到真正處理請求的頁面是login.php,登錄成功之後跳轉到index.php頁面,下面咱們來模擬一下。session

代碼實現post

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) #打印返回的文本信息 

下來咱們請求其餘的頁面看一下效果spa

RES1 = requests.get("http://yingxiao.chewumi.com/show.php?id=64621190")
print(RES1.text)

 此時咱們登錄成功再次請求其餘的頁面的時候,發現沒法請求到對應的頁面,意味到剛纔的模擬登錄只對當前的操做起做用,那麼如何使用下面的請求繼續有效。實際過程當中咱們知道session過時,咱們須要從新登錄,那麼咱們第一次登錄成功session,只對當前有效,因此咱們再次登陸就登錄失敗,那麼咱們須要在session有效期內,把session保存,而後再次去請求其餘的頁面。code

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)

此時咱們看到已經能夠請求到對應的頁面了。blog

相關文章
相關標籤/搜索