一、介紹
proxyhandler是Python中的一個內置模塊,它提供了一種通用的handler,用於處理帶有代理的url請求。使用proxyhandler可以輕鬆地訪問需要代理的網站。
proxyhandler的使用非常簡單,只需要創建一個ProxyHandler對象並將其傳遞給urllib.request.build_opener方法即可。
import urllib.request
# 代理服務器
proxy_handler = urllib.request.ProxyHandler({
'http': 'http://127.0.0.1:8080',
'https': 'http://127.0.0.1:8080'
})
# 創建opener
opener = urllib.request.build_opener(proxy_handler)
# 發送請求
response = opener.open('http://www.baidu.com')
# 打印響應內容
print(response.read().decode())
上面的代碼中,proxy_handler是一個代理處理器對象,它將會發送所有的請求到指定的代理服務器。創建opener時需要將proxy_handler作為參數傳入,這樣就能夠使用代理訪問指定網站。發送請求和打印響應的部分與普通的urlopen方法相同。
二、使用代理
使用代理的方式有很多種,下面介紹幾種常見的代理使用方式。
1、使用HTTP代理
import urllib.request
# HTTP代理服務器
proxy_handler = urllib.request.ProxyHandler({
'http': 'http://127.0.0.1:8080'
})
# 創建opener
opener = urllib.request.build_opener(proxy_handler)
# 發送請求
response = opener.open('http://www.baidu.com')
# 打印響應內容
print(response.read().decode())
上面的代碼中,指定了一個HTTP代理服務器。通過將代理服務器地址傳遞給ProxyHandler的構造函數,可以創建代理處理器對象。然後,使用代理處理器對象創建opener,再使用opener發送請求即可。
2、使用HTTPS代理
import urllib.request
# HTTPS代理服務器
proxy_handler = urllib.request.ProxyHandler({
'https': 'http://127.0.0.1:8080'
})
# 創建opener
opener = urllib.request.build_opener(proxy_handler)
# 發送請求
response = opener.open('https://www.baidu.com')
# 打印響應內容
print(response.read().decode())
上面的代碼中,指定了一個HTTPS代理服務器。只需將代理服務器地址傳遞給ProxyHandler的構造函數即可。
3、使用SOCKS代理
import urllib.request
# SOCKS5代理服務器
proxy_handler = urllib.request.ProxyHandler({
'socks': 'socks5://127.0.0.1:1080'
})
# 創建opener
opener = urllib.request.build_opener(proxy_handler)
# 發送請求
response = opener.open('http://www.baidu.com')
# 打印響應內容
print(response.read().decode())
上面的代碼中,指定了一個SOCKS5代理服務器。只需將代理服務器地址傳遞給ProxyHandler的構造函數即可。
三、忽略代理
有些網站不支持代理訪問,可以通過以下兩種方式忽略代理:
1、針對特定網址忽略代理
import urllib.request
# 代理服務器
proxy_handler = urllib.request.ProxyHandler({
'http': 'http://127.0.0.1:8080'
})
# 創建opener
opener = urllib.request.build_opener(proxy_handler)
# 創建請求對象
req = urllib.request.Request('http://www.baidu.com')
# 忽略代理
req.set_proxy(None, None)
# 發送請求
response = opener.open(req)
# 打印響應內容
print(response.read().decode())
上面的代碼中,使用Request對象創建請求,然後使用set_proxy方法將代理設置為None,即可忽略代理請求。
2、全局忽略代理
import urllib.request
# 代理服務器
proxy_handler = urllib.request.ProxyHandler({
'http': 'http://127.0.0.1:8080'
})
# 創建opener
opener = urllib.request.build_opener(proxy_handler)
# 忽略代理
urllib.request.install_opener(opener)
# 發送請求
response = urllib.request.urlopen('http://www.baidu.com')
# 打印響應內容
print(response.read().decode())
上面的代碼中,使用install_opener方法將代理設置為None,即可忽略代理請求。
四、總結
proxyhandler是Python中非常實用的一個內置模塊,可以輕鬆地使用代理訪問需要代理的網站。使用方法非常簡單,只需創建一個ProxyHandler對象並將其傳遞給urllib.request.build_opener方法即可。
在使用代理的過程中,我們還介紹了多種使用代理的方式,包括使用HTTP代理、HTTPS代理和SOCKS代理。同時,我們也介紹了如何忽略代理訪問特定網址和全局忽略代理的方法。
原創文章,作者:UFWJ,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/141810.html
微信掃一掃
支付寶掃一掃