1. 程式人生 > >《五分鐘速學技巧_利用ip代理繞過ip訪問限制防爬策略》

《五分鐘速學技巧_利用ip代理繞過ip訪問限制防爬策略》

0x00序言

批量獲取代理IP詳見上篇文章《分享專案_python爬取可用代理ip》,在大量爬取某個指定網站時,若該網站做了限制單位時間內同個ip的訪問次數,則需要利用代理ip來幫助我們的爬蟲專案完成請求。獲取免費的代理IP很簡單,百度免費代理IP即可,本文中在點選開啟連結獲取代理IP

0x01關鍵程式碼實現機理

首先獲取足夠的代理IP池,這在上篇文章中分享的專案可以快速搭建一個爬取代理IP池。

拿到足夠的IP之後,我們即可用urllib庫的request方法中的,ProxyHandler方法,build_opener方法,install_opener方法,這三個方法可以看做是使用代理IP的一個套路

擷取官方文件的部分關鍵文件

class 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.

build_opener方法返回一個連結著給定順序的handler的OpenerDirector例項。 urllib.request.install_opener(opener)

Install an OpenerDirector instance as the default global opener.

install_opener方法安裝OpenerDirector例項作為預設的全域性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的限制訪問次數。

你學會了嗎?