Python網絡爬蟲之遇到需要登錄的網站怎麼辦?

當我們在爬取某些網站的時候,

需要登錄才可以獲取數據,

怎麼辦?


登錄的常見方法無非是這兩種:

  1. 讓你輸入帳號和密碼登錄;
  2. 讓你輸入帳號密碼+驗證碼登錄。


我們先來說說第一種帳號和密碼登錄,驗證碼的下篇文章再說。

第一招:Cookie大法!

你平常在上某個不為人知的網站的時候,

是不是發現你只要登錄一次,

就可以一直看到你想要的內容,

過了一陣子才需要再次登錄,

這就是因為 Cookie 在做怪。

簡單來說,

就是每一個使用這個網站的人,

服務器都會給他一個 Cookie,

那麼下次你再請求數據的時候,

你順帶把這個 Cookie 傳過去。

服務器一看,

誒,老客戶啊,

登錄過,

直接返回數據給他吧。

該服務中還可以設置 Cookie 的有效時間,

也就是說,

當你下次攜帶一個過期了的 Cookie 給服務器的時候,

服務器雖然知道你是老客戶,

但是還是需要你重新再登錄一次,

然後再給你一個有效的 Cookie,

Cookie 的時長週期是服務器那邊定的。


瞭解了這一點之後,

我們就來玩一下吧。

我們以「逼乎」為例,

https://biihu.cc/account/login/

輸入地址之後,

按一下 F12,

點擊 network 標籤,

然後登錄你的帳號,

然後點擊其中一個,

你就可以看到在 Request Headers 有你的 Cookie。

Python網絡爬蟲之遇到需要登錄的網站怎麼辦?

有了 Cookie 之後,

我們在代碼中直接獲取我的個人信息。

Python網絡爬蟲之遇到需要登錄的網站怎麼辦?

運行後可以發現不用登錄就可以直接拿到自己的個人信息了。

Python網絡爬蟲之遇到需要登錄的網站怎麼辦?

第二招:表單請求大法

很簡單,

就是通過抓包,

獲取請求登錄的時候需要用到的用戶名密碼參數,

然後以表單的形式請求服務器,

小編前面的文章已經講過怎麼用python偽裝成瀏覽器,以表單提交數據,

有興趣的可以看看前面的文章。

第三招:Selenium 自動登錄法

大家應該已經看過了,

相信你們已經學會了Selenium的使用了!

用Selenium,我們可以:

獲取到兩個輸入框的元素,

再獲取到登錄按鈕,

往輸入框寫你的帳號密碼,

然後自動點擊一下登錄。

Python網絡爬蟲之遇到需要登錄的網站怎麼辦?

登錄完之後拿到 Cookie:

<code>cookies = webdriver.get_cookies()/<code>

有了 Cookie 你就可以拿到你想要的數據了。


下篇文章我們學習一下賬號密碼+驗證碼搞定網站登錄問題!


分享到:


相關文章: