Python爬蟲連載6-cookie深入使用實例化實現自動登錄


一、使用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 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.HTTPHandler()

#創建請求管理器

opener = request.build_opener(http_handler,https_handler,cookie_handler)

​

def login():

    """

    負責初次登錄

    需要輸入用戶名密碼

    :return:

    """

    url = "http://www.renren.com/PLogin.do"

    data = {

        "email":"1215217867@qq.com",

        "password":"481648541615485"

    }

    #把數據進行編碼

    data = parse.urlencode(data)

    #創建一個請求對象

    req = request.Request(url,data=data.encode())

    #使用opener發起請求

    rep = opener.open(req)

​

def getHomePage():

    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 in cookie:

        print(type(item))

        print(item)

        for i in dir(item):

            print(i)

    getHomePage()

 

二、源碼

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.歡迎關注微信公眾號:傅里葉變換,個人公眾號,僅用於學習交流,后台回復”禮包“,獲取大數據學習資料

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM