【小白學爬蟲連載(10)】–如何用Python實現模擬登陸網站


Python如何實現模擬登陸爬取Python實現模擬登陸的方式簡單來說有三種:一、采用post請求提交表單的方式實現。二、利用瀏覽器登陸網站記錄登陸成功后的cookies,采用get的請求方式,傳入cookies值來實現登陸。三、采用模擬瀏覽器的方式登陸。三種方式各有利弊,采用第一種方式每次運行程序都是重新登陸,容易造成封賬號的情況出現,同時不能用在驗證碼是JS加載生成的和查看不到提交表單格式這兩種情況。我認為第二種方式優於第一種和第三種,大多數情況下推薦使用第二種。對於較大規模的采集,一般的做法是利用大量小號采用第一或第三種方式定期生成大量的cookies,保存起來形成一個自己的cookie池,並維護其有效性,在采集時調用cookie池中的cookies完成爬取。

本次分享以登陸豆瓣為例講解前兩種登陸方式。  

第一種提交post請求的方式首先講解第一種方式,其重點有兩個:一是找到網站的登陸網址;二是找到post請求提交的表單格式。以豆瓣為例豆瓣的登陸網址為:https://accounts.douban.com/login 這里要注意通訊協議是https而不是http 。接下來解決如何查看網站登陸提交的表單格式。這里使用的是chrome瀏覽器。

在瀏覽器中打開網址:https://www.douban.com/,出現如下圖所示頁面【小白學爬蟲連載(10)】--如何用Python實現模擬登陸網站

點擊快捷鍵F12打開開發者工具,選中Network,並勾選Preserve log,輸入假的賬號或密碼,不輸入驗證,如下圖所示。

【小白學爬蟲連載(10)】--如何用Python實現模擬登陸網站

點擊登陸豆瓣按鈕,選中login頁面,點擊headers,翻到最后面,可以看到formdata,如下圖所示:

【小白學爬蟲連載(10)】--如何用Python實現模擬登陸網站

如圖所示豆瓣登陸需要提交的以下關鍵字:

  1. source:index_nav
  2. form_email:你的賬號
  3. form_password:密碼
  4. captcha-solution:驗證碼
  5. captcha-id:HzglLIfrAxX6maSpZSJPsDAW:en(驗證碼所對應的id)

知道表單格式后下面開始編寫爬蟲代碼。

模擬登陸使用requests庫和re庫,豆瓣前幾次登陸是不需要輸入驗證碼的,只輸入賬號密碼就可以,但登陸幾次后由於其反爬蟲機制的作用,就需要輸入驗證碼了,所以程序中需要判斷本次登陸是否需要輸入驗證碼,本程序處理驗證碼的方式比較簡單粗暴,就是自己看驗證然后手動輸入,完成登陸。

部分代碼如圖所示:

【小白學爬蟲連載(10)】--如何用Python實現模擬登陸網站

想要查看完整代碼請關注公眾號並回復:db

第二種利用登陸cookies的方式第二種方式操作起來相對比較簡單,首先打開瀏覽器,打開豆瓣首頁,完成登陸。在登陸完成的頁面點擊快捷鍵F12打開開發者工具,選中Network,並勾選Preserve log,更新當前頁面。選中www.douban.com頁面,點擊headers,在Request Headers中,可以看到Cookie,把它復制粘貼下來。

【小白學爬蟲連載(10)】--如何用Python實現模擬登陸網站

完成以上操作后,可以完成利用cookie傳入的方式實現模擬登陸了。在完成登陸后在程序中嘗試了獲取標題、摘要、和圖片鏈接如下圖所示,獲取到數據后存儲到MongoDB數據庫中。

【小白學爬蟲連載(10)】--如何用Python實現模擬登陸網站

部分代碼如下圖所示:

【小白學爬蟲連載(10)】--如何用Python實現模擬登陸網站


免責聲明!

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



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