1. 程式人生 > >爬取需要登錄的頁面

爬取需要登錄的頁面

image log 方式 ade 什麽 用戶名 方法 請求 服務器

對於一些公共的站點,比如糗事百科 、新聞站點等,不需要登錄就能通過 urllib2.urlopen() 打開並爬取我們想要的資源
但像一些私密的站點,比如管理後臺,數據中心等,需要登錄後才能使用 urllib2.urlopen() 打開並爬取我們想要的資源
需要登錄的站點,我們在使用 urllib2.urlopen() 時需要向服務器傳遞一些數據,比如用戶名 、密碼等,傳遞數據通常有 GET 和 POST 兩種方法

GET 是直接以網址形式打開,網址中包含了所有的參數,瀏覽器會把 http header 和 data 一並發送出去,服務器響應200(返回數據)
POST 是瀏覽器先發送 http header,服務器響應100 continue,瀏覽器再發送 data,服務器響應200 ok(返回數據),具體用什麽方法是由服務器來決定的

可以參考 Django 是如何進行數據傳遞的:https://www.cnblogs.com/pzk7788/p/10340215.html


使用 POST 方式登錄並爬取資源的流程(這裏我以登錄 GitLab 為例):

第一步,先打開登錄頁面,然後按 F12 打開開發者工具

技術分享圖片


第二步,登錄進去,然後找到 POST 請求

技術分享圖片


第三步,查看 POST 請求,找到表單數據

技術分享圖片


最後,根據表單數據使用 POST 方式模擬登錄

爬取需要登錄的頁面