python網絡爬蟲系列(二)——ProxyHandler處理器實現代理IP

ProxyHandler處理器(代理):

很多網站會檢測某一段時間某個IP的訪問次數(通過流量統計,系統日誌等),如果訪問次數多的不像正常人,它會禁止這個lP的訪問。
所以我們可以設置一些代理服務器,每隔一段時間換一個代理,就算IP被禁止,依然可以換個IP繼續爬取。
urllib中通過ProxyHandler來設置使用代理服務器,下面代碼說明如何使用自定義opener來使用代理

  1. 代理的原理:在請求目的網站之前,先請求代理服務器,然後讓代理服務器去請求目的網站,代理服務器拿到目的網站的數據後,再轉發給我們的代碼。
  2. http://httpbin.org:這個網站可以方便的查看http請求的一些參數。比如本機在外網中的IP地址
  3. 在代碼中使用代理:
    • 使用urllib.request.ProxyHandler,傳入一個代理,這個代理是一個字典,字典的key依賴於代理服務器能夠接收的類型,一般是http或者https,值是ip:port
    • 使用上一步創建的handler,以及request.build_opener創建一個opener對象。
    • 使用上一步創建的opener,調用open函數,發起請求。

免費代理網站:

在這裏插入圖片描述

示例代碼如下:

from urllib import request

# 沒有使用代理的本機外網ip地址爲120.229.8X.XX
url = 'http://www.httpbin.org/ip'
resp = request.urlopen(url)
print(resp.read()) # 120.229.8X.XX

# 使用代理的
# 1、使用ProxyHandler,傳入代理,構建一個handler
handler = request.ProxyHandler({'http':'122.136.212.132:53281'})

# 2、使用上面創建的handler構建一個opener
opener = request.build_opener(handler)

# 3、使用opener去發送一個請求
resp1 = opener.open(url)
print(resp1.read())

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章