一、使用cookie登入
1.直接把cookie複制下去,然後手動放到請求頭
2.http子產品包含一些關于cookie的子產品,通過他們我們可以自動使用cookie
(1)cookieJar
管理存儲cookie,向傳出的http請求添加cookie;cookie存儲在記憶體中,CookieJar執行個體回收後cookie将消失;
(2)FileCookieJar(filename,delayload=None,policy=Nnone)
使用檔案管理cookie;filename是儲存cookie的檔案
filename是儲存cookie的檔案
(3)MozillaCookieJar(filename,delayload=None,policy=None)
建立于mocilla浏覽器cookie,txt相容的FileCookieJar執行個體
(4)LwpCookieJar(filename,delayload-None,policy=None)
建立與libww-perl标準相容的FileCookieJar執行個體
(5)他們的關系是:CookieJar-->FileCookirJar-->MozillaCookieJar & LwpCookieJa
3.利用cookiejar通路人人網
自動使用cookie登入,大緻流程為:(1)打開登陸頁面後自動通過使用者名密碼登入;(2)自動提取回報回來的cookie;(3)利用提取的cookie登入隐私頁面;
4.handler是Handler的執行個體,常用參看案例代碼
(1)用來處理複雜請求
#生成cookie的管理器
cookie_handler=request.HTTPCookieProcessor(cookie)#建立http請求管理器
http_handler=request.HTTPHandler()#生成https管理器
https_handler= request.HTTPHandler()
(2)創立handler後,使用opener打開,打開後相應的業務由相應的handler處理
(3)cookie作為一個變量,列印出來
cookie的屬性:
name:名稱 value:值 domain:可以通路此cookie的域名 expires:過期時間 size:大小 Http字段
from urllib importrequest,parsefrom http importcookiejar#建立cookiejar執行個體
cookie=cookiejar.CookieJar()#生成cookie的管理器
cookie_handler=request.HTTPCookieProcessor(cookie)#建立http請求管理器
http_handler=request.HTTPHandler()#生成https管理器
https_handler=request.HTTPHandler()#建立請求管理器
opener=request.build_opener(http_handler,https_handler,cookie_handler)
deflogin():"""負責初次登入
需要輸入使用者名密碼
:return:"""url= "http://www.renren.com/PLogin.do"data={"email":"[email protected]","password":"481648541615485"}#把資料進行編碼
data=parse.urlencode(data)#建立一個請求對象
req= request.Request(url,data=data.encode())#使用opener發起請求
rep=opener.open(req)
defgetHomePage():
url= "http://www.renren.com/965187997/profile"
#如果已經執行了login函數,則opener自動已經包含相應的cookie值
rsp=opener.open(url)
html=rsp.read().decode()
with open("rsp.html","w") as f:
f.write(html)
if __name__ == "__main__":"""執行完login之後,會得到授權之後的cookie
我們嘗試把cookie列印出來"""login()print(cookie)for item incookie:print(type(item))print(item)for i indir(item):print(i)
getHomePage()
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnaugzM0MjN0QDMxETLzkjN1EzMyADMwEjMwAjMwITL1MDN3AzNx8CXyADMyAjMvwVNzQzNwcTMvwlbv1WbvN2Lc12bj5ycn9Gbi52YugTMwIzZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
二、源碼
Reptitle6_CookieJar.py
https://github.com/ruigege66/PythonReptile/blob/master/Reptitle6_CookieJar.py
2.CSDN:https://blog.csdn.net/weixin_44630050
3.部落格園:https://www.cnblogs.com/ruigege0000/
4.歡迎關注微信公衆号:傅裡葉變換,個人公衆号,僅用于學習交流,背景回複”禮包“,擷取大資料學習資料