1. 程式人生 > >Python3.x爬蟲---代理伺服器的設定

Python3.x爬蟲---代理伺服器的設定

當使用同一個IP去爬取同一個網站的網頁時,次數多了或者時間久了,該網站伺服器就會對這個IP進行遮蔽,而這也是我們爬蟲程式必須要解決的一個問題。如何去解決這個問題呢?

如果有HTTP基礎,就知道有一種叫做代理伺服器的東西,而我們也可以使用這個代理伺服器解決上述問題。

基本思路:在爬取網頁的時候,在對方伺服器上顯示的是別人的IP地址,那麼,即使對方將顯示出來的這個IP地址進行遮蔽,那麼我們可以再次換另一個IP地址進行網站爬取。

基本原理:使用代理伺服器時,在對方伺服器上顯示的不是我們真實的IP地址,而是代理伺服器的IP地址

一般情況下,我們不僅需要知道IP地址,還需要知道網路埠號,即:IP地址:埠號的形式。

以下是具體程式碼:

#匯入庫
import  urllib.request

#定義一個函式
def use_proxy(addr,url):
    """使用代理伺服器
    addr:代理伺服器的IP
    url:要爬取的網頁URL
    """
    #使用urllib.request.ProxyHandler()來設定對應的代理伺服器資訊
    proxy=urllib.request.ProxyHandler({'http':addr})
    #urllib.request.build_opener()建立一個Opener物件,第一個引數為代理資訊,第二個引數為urllib.request.HTTPHandler
    opener=urllib.request.build_opener(proxy,urllib.request.HTTPHandler)
    #使用urllib.request.install_opener(opener),註冊(安裝)opener物件
    urllib.request.install_opener(opener)
    #urllib.request.urlopen(url).read().decode('utf-8')開啟對應的網頁讀取資料,編碼後賦值給變數data
    data=urllib.request.urlopen(url).read().decode('utf-8')
    #返回data
    return data

addr="202.75.210.45:8888"
data=use_proxy(addr,"http://www.baidu.com")
print(data)