Python爬蟲連載5-Proxy、Cookie解析

1、ProxyHandler處理(代理服務器)html

1.使用代理IP,是爬蟲的經常使用手段git

2.獲取代理服務器的地址:github

www.xicidaili.com數據庫

www.goubanjia.com瀏覽器

3.代理用來隱藏真實訪問中,代理不容許頻繁訪問某一個固定網站,因此代理必定要不少不少。安全

4.基本使用步驟:服務器

(1)設置代理地址微信

(2)建立PoxyHandlercookie

(3)建立Openersession

(4)安裝Opener

 

"""

使用代理訪問百度首頁

​

"""

from urllib import request,error

​

if __name__ =="__main__":

    url = "https://www.baidu.com"

    #設置代理地址

    proxy = {"http":"39.106.114.143:80"}

    #建立ProxyHandler

    proxy_handler = request.ProxyHandler(proxy)

    #建立Opener

    opener = request.build_opener(proxy_handler)

    #安裝Opener

    request.install_opener(opener)

​

    #如今若是訪問url。那麼就會使用代理服務器

    try:

        rsp = request.urlopen(url)

        html = rsp.read().decode()

        print(html)

    except error.URLError as e:

        print(e)

    except Exception as e:

        print(e)

2、cookie

 1..因爲http協議的無記憶性,人們爲了彌補這個缺憾,所採用的一個補充協議。

2.cookie是發放給用戶(即http瀏覽器)的一段信息,session是保存在服務器上的對應的另外一半的信息,用來記錄用戶信息。

3.cookie和session的區別

(1)存放的位置不相同;(2)cookie不安全;(3)session會保存在服務器上必定時間,會過時;(3)單個cookie保存數據不超過4k,不少瀏覽器限制一個站點最多保存20個。

4.session存放位置

(1)存在服務器上;(2)通常狀況下,session是放在內存中或者數據庫中。

5.案例:

沒有cookie登陸則反饋網頁爲未登陸狀態

使用cookie登陸

 

from urllib import request

​

if __name__ == "__main__":

    url = "https://leetcode-cn.com/"

    headers = {

        "cookie":"_ga=GA1.2.606835635.1580743041; gr_user_id=d15dfef5-20a7-44a4-8181-f088825ee052; grwng_uid=1d99b83c-8186-4ffa-905e-c912960d9049; __auc=952db4f31700ba0a3811855dc67; csrftoken=zW1tIWrqqDGQ2gDeEAiRM3Pu41f3qetXjvNP5jxuDpekTTyHj262rmfnO2PtXiCI; LEETCODE_SESSION=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJfYXV0aF91c2VyX2lkIjoiOTUxOTE1IiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiYXV0aGVudGljYXRpb24uYXV0aF9iYWNrZW5kcy5QaG9uZUF1dGhlbnRpY2F0aW9uQmFja2VuZCIsIl9hdXRoX3VzZXJfaGFzaCI6ImQ0ODczNmFiODAwZjk0ZTU3ZjAwMmQ4YjU1YjRmNWZmMDViMDllOTIiLCJpZCI6OTUxOTE1LCJlbWFpbCI6IiIsInVzZXJuYW1lIjoicnVpZ2VnZTY2IiwidXNlcl9zbHVnIjoicnVpZ2VnZTY2IiwiYXZhdGFyIjoiaHR0cHM6Ly9hc3NldHMubGVldGNvZGUtY24uY29tL2FsaXl1bi1sYy11cGxvYWQvZGVmYXVsdF9hdmF0YXIucG5nIiwicGhvbmVfdmVyaWZpZWQiOnRydWUsInRpbWVzdGFtcCI6IjIwMjAtMDItMDMgMTU6MTg6MDYuNjYw160b58f59beeae32; a2873925c34ecbd2_gr_session_id=e9ba4267-3dbc-47c1-aa02-c6e92e8eb4a8; a2873925c34ecbd2_gr_last_sent_sid_with_cs1=e9ba4267-3dbc-47c1-aa02-c6e92e8eb4a8; a2873925c34ecbd2_gr_session_id_e9ba4267-3dbc-47c1-aa02-c6e92e8eb4a8=true; _gid=GA1.2.1242221115.1580917808; Hm_lpvt_fa218a3ff7179639febdb15e372f411c=1580917870; a2873925c34ecbd2_gr_cs1=ruigege66; _gat_gtag_UA_131851415_1=1"

    }

    req = request.Request(url,headers=headers)

    rsp = request.urlopen(req)

    html = rsp.read().decode()

    with open("rsp.html","w") as f:

        f.write(html.encode("GBK","ignore").decode("GBK"))

3、源碼

Reptitle5_Proxy.py

Reptitle6_Cookie.py

https://github.com/ruigege66/PythonReptile/blob/master/Reptitle5_Proxy.py

https://github.com/ruigege66/PythonReptile/blob/master/Reptitle6_Cookie.py

2.CSDN:https://blog.csdn.net/weixin_44630050

3.博客園:https://www.cnblogs.com/ruigege0000/

4.歡迎關注微信公衆號:傅里葉變換,我的公衆號,僅用於學習交流,後臺回覆」禮包「,獲取大數據學習資料

 

相關文章
相關標籤/搜索