《五分鐘速學技巧_利用ip代理繞過ip訪問限制防爬策略》
阿新 • • 發佈:2019-01-29
0x00序言
批量獲取代理IP詳見上篇文章《分享專案_python爬取可用代理ip》,在大量爬取某個指定網站時,若該網站做了限制單位時間內同個ip的訪問次數,則需要利用代理ip來幫助我們的爬蟲專案完成請求。獲取免費的代理IP很簡單,百度免費代理IP即可,本文中在點選開啟連結獲取代理IP
0x01關鍵程式碼實現機理
首先獲取足夠的代理IP池,這在上篇文章中分享的專案可以快速搭建一個爬取代理IP池。
拿到足夠的IP之後,我們即可用urllib庫的request方法中的,ProxyHandler方法,build_opener方法,install_opener方法,這三個方法可以看做是使用代理IP的一個套路
擷取官方文件的部分關鍵文件
urllib.request.
ProxyHandler
(proxies=None)
Cause requests to go through a proxy. If proxies is given, it must be a dictionary mapping protocol names to URLs of proxies.
ProxyHandler官方文件翻譯過來就是,通過代理方法請求,如果給定一個代理,它必須是一個字典對映,key為協議,value為URLs或者代理ip。urllib.request.
build_opener
([handler,
...])Return an
OpenerDirector
instance, which chains the handlers in the order given.
urllib.request.
install_opener
(opener)
Install an
OpenerDirector
instance as the default global opener.
如果無法理解的話,可以把這三個方法當做一個套路來使用。
0x02整體程式碼思路
這次的思路很簡單,就是以上方法的順序使用。
1.將代理IP及其協議載入ProxyHandler賦給一個opener_support變數
2.將opener_support載入build_opener方法,建立opener
3.安裝opener
0x03具體程式碼實現
from urllib import request
def ProxySpider(url, proxy_ip, header):
opener_support = request.ProxyHandler({'http': proxy_ip})
opener = request.build_opener(opener_support)
request.install_opener(opener)
req = request.Request(url, headers=header)
rsp = request.urlopen(req).read()
return rsp
好了,已經實現了使用代理ip訪問url的方法了,這樣就能繞過伺服器對ip的限制訪問次數。
你學會了嗎?