Python爬蟲教程-14-爬蟲使用filecookiejar儲存cookie檔案(人人網)
- 上一篇介紹了利用CookieJar訪問人人網,本篇將使用filecookiejar將cookie以檔案形式儲存
- 自動使用cookie登入,使用步驟:
- 1.開啟登入頁面後,通過使用者名稱密碼登入
- 2.自動提取反饋回來的cookie
- 3.利用提取的cookie登入個人資訊頁面
- 建立cookiejar例項
- 生成cookie的管理器
- 建立http請求管理器
- 建立https請求的管理器
- 建立請求管理器
- 通過輸入使用者名稱和密碼,獲取cookie
- 程式碼:
# 建立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)
建立handle後,使用opener開啟,開啟後相應的業務由相應的handle處理
cookie作為一個變數列印出來
# 使用cookiejar
# cookie作為一個變數列印出來
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 = {
# 引數使用正確的使用者名稱密碼
"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()
# 執行完login之後,會得到授權之後的cookie,下一步列印出來
print(cookie)
for item in cookie:
print(type(item))
print(item)
for i in dir(item):
print(i)
我們使用print(i)列印出來了cookie的所有屬性
下面介紹常用的屬性
cookie的屬性
- name:名稱
- value:值
- domain:可以訪問此cookie的域名
- path:可以訪問此cookie的頁面路徑
- expires:過期時間
- size:大小
- http:欄位
cookie的值雖然可以自己修改,但是修改後就會導致和伺服器端資料不一致,而使cookie無效,最終登入失敗
cookie的儲存-FileCookieJar
- 將cookie以檔案形式儲存
- 案例v15filecookiejar檔案:https://xpwi.github.io/py/py%E7%88%AC%E8%99%AB/py15filecookiejar.py
# 使用filecookiejar
from urllib import request,parse
from http import cookiejar
# 建立cookiejar的例項
filename = "py15renrenCookie.txt"
cookie = cookiejar.MozillaCookieJar(filename)
# 常見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 = {
# 引數使用正確的使用者名稱密碼
"email": id,
"password": pw
}
# 把資料進行編碼
data = parse.urlencode(data)
# 建立一個請求物件
req = request.Request(url,data=data.encode('utf-8'))
# 使用opener發起請求
rsp = opener.open(req)
'''
儲存cookie到檔案
兩個引數:
ignore_discard:表示及時cookie將要被丟棄,是否儲存下來
ignore_expires:表示如果該檔案中cookie已經過期,是否儲存下來
'''
cookie.save(ignore_discard=True, ignore_expires=True)
if __name__ == '__main__':
login()
執行結果
本篇使用filecookiejar將cookie以檔案形式儲存
更多文章連結:Python 爬蟲隨筆
- 本筆記不允許任何個人和組織轉載