轉載自:原文鏈接
前幾篇文章介紹了urllib庫基本使用和爬蟲的簡單應用,本文介紹如何通過post信息給網站,保存登陸后cookie,並用於請求有
權限的操作。保存cookie需要用到cookiejar類,可以輸出cookie信息查看下
1 |
import http.cookiejar |
1 通過http.cookiejar.CookieJar()創建一個cookiejar對象,用來保存上網留下的cookie。
2 為了處理cookie,需要創建cookie處理器,通過urllib.request.HTTPCookieProcessor(cookie)根據cookie
創建cookie處理器。
3 接下來根據cookie處理器,建立opener, urllib.request.build_opener(handler)創建opener
4 通過openr訪問cookie中的數據
可以保存cookie,用於以后訪問有權限的網頁。下面將cookie寫入文件
1 |
#定義文件名 |
1 傳入文件名,調用http.cookiejar.MozillaCookieJar創建cookie,
cookie和文件名綁定了。
2 根據cookie創建處理器, request.HTTPCookieProcessor創建handler
3 根據Cookie處理器創建opener
4 用opener訪問網站,生成cookie
5 cookie.save保存到filename文件中,ignore_discard表示忽略是否過期,
及時被丟棄也保存。ignore_expires表示文件存在則覆蓋寫入。
對於保存好的cookie文件,可以提取並訪問其他網頁。
1 |
filename = 'cookie.txt' |
1 用MozillaCookieJar創建cookie
2 調用cookie.load加載文件內容到cookie中
3 根據cookie創建HTTPCookieProcessor
4 根據handler創建opener
5 利用opener打開網頁,返回response
下面綜合應用上面的知識,用爬蟲模擬登陸,然后獲取有權限的網頁和信息。
通過瀏覽器審查元素的方式可以查看訪問網站的request和response,用fiddler更方便一些,用fidder監控瀏覽器
數據,然后模擬瀏覽器發送登錄請求。
隨便找一個需要登陸的網站
http://www.lesmao.cc/forum.php
找到登陸按鈕,點擊登陸,查看fiddler監控的數據。
可以在fiddler中看到這個request請求post數據給網站。
通過webform這一選項看到我們投遞的消息
有些網頁是需要登陸才能訪問的,如
http://www.lesmao.cc/home.php?mod=space&do=notice&view=system
下面先模擬登陸,獲取cookie,然后利用cookie訪問個人信息網頁。
1 |
if __name__ == '__main__': |
打印出的html信息和登陸后點擊的信息是一致的,所以用cookie登陸並訪問其它權限網頁成功了。
源碼下載地址:
源碼下載
我的公眾號:
