爬取需要登錄的頁面
阿新 • • 發佈:2019-02-14
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 方式模擬登錄
爬取需要登錄的頁面