Python爬蟲教程-13-爬蟲使用cookie爬取登入後的頁面(下)
- 自動使用cookie的方法,告別手動拷貝cookie
- http模組包含一些關於cookie的模組,通過他們我們可以自動的使用cookie
- CookieJar- 管理儲存Cookie,向傳出的http請求新增cookie
- 這裡Cookie儲存在記憶體中,CookieJar例項回收後cookie將消失
- FileCookieJar(filename, delayload=None, policy=None)
- 使用檔案管理cookie
- filename是儲存cookie的檔案
- MozillaCookieJar(filename, delayload=None, policy=None)
- 建立Mocilla瀏覽器cookie.txt相容的FileCookieJar例項
- 火狐Firefox瀏覽器需要單獨處理
- LwpCookieJar(filename, delayload=None, policy=None)
- 建立於libww-per標準相容的Set-Cookie3格式的FileCookieJar
- 它們之間的關係: CookieJar-->FileCookieJar-->MozillaCookieJar & LwpCookieJar
利用CookieJar訪問人人網
- 自動使用cookie登入,使用步驟:
- 1.開啟登入頁面後自動通過使用者名稱密碼登入
- 2.自動提取反饋回來的cookie
- 3.利用提取的cookie登入個人資訊頁面
- 建立cookiejar例項
- 生成cookie的管理器
- 建立http請求管理器
- 建立https請求的管理器
- 建立請求管理器
- 通過輸入使用者名稱和密碼,獲取cookie
- 案例13cookiejar檔案:https://xpwi.github.io/py/py%E7%88%AC%E8%99%AB/py13cookiejar.py
# 使用cookiejar完整程式碼
from urllib import request,parse
from http import cookiejar
# 建立cookiejar的例項
cookie = cookiejar.CookieJar()
# 常見cookie的管理器
cookie_handler = request.HTTPCookieProcessor(cookie)
# 建立http請求的管理器
http_handler = request.HTTPHandler()
# 生成https管理器
https_handler = request.HTTPSHandler()
# 建立請求管理器
opener = request.build_opener(http_handler,https_handler,cookie_handler)
def login():
# 負責首次登入,輸入使用者名稱和密碼,用來獲取cookie
url = 'http://www.renren.com/PLogin.do'
id = input('請輸入使用者名稱:')
pw = input('請輸入密碼:')
data = {
# 從input標籤的name獲取引數的key,value由輸入獲取
"email": id,
"password": pw
}
# 把資料進行編碼
data = parse.urlencode(data)
# 建立一個請求物件
req = request.Request(url,data=data.encode('utf-8'))
# 使用opener發起請求
rsp = opener.open(req)
# 以上程式碼就可以進一步獲取cookie了,cookie在哪呢?cookie在opener裡
def getHomePage():
# 地址是用在瀏覽器登入後的個人資訊頁地址
url = "http://www.renren.com/967487029/profile"
# 如果已經執行login函式,則opener自動已經包含cookie
rsp = opener.open(url)
html = rsp.read().decode()
with open("rsp1.html", "w", encoding="utf-8")as f:
# 將爬取的頁面
print(html)
f.write(html)
if __name__ == '__main__':
login()
getHomePage()
執行結果
看到自己的個人資訊就是說明登入成功了
補充:在爬蟲程式碼輸入使用者名稱和密碼的使用方法
- 1.開啟網站首頁,登入表單頁面
- 2.在輸入使用者名稱和密碼的地方,【右鍵檢查】,或者檢視原始碼
- 3.找到登入表單【form標籤的action屬性】,拷貝地址
- 4.提示:如果不能直接拷貝,【雙擊】地址,Ctrl+C
- 操作截圖:
- 5.找到使用者名稱和密碼的【input標籤的name屬性】,構建引數時使用
- 6.然後在程式碼中,構建data引數,模擬post請求
# 程式碼片段
url = 'http://www.renren.com/PLogin.do'
data = {
# 引數使用正確的使用者名稱密碼
"email": "18322295195",
"password": "oaix51607991"
}
# 把資料進行編碼
data = parse.urlencode(data)
爬蟲使用cookie,自動獲取cookie解介紹到這裡了
更多文章連結:Python 爬蟲隨筆
- 本筆記不允許任何個人和組織轉載