正文

python代理ip使用方法:代碼集成輕松爬數(shù)據(jù)

神龍ip

一、為什么Python爬數(shù)據(jù)必須用代理IP?

咱們程序員在用Python爬數(shù)據(jù)時(shí),經(jīng)常遇到網(wǎng)頁(yè)突然打不開、返回403錯(cuò)誤的情況。這其實(shí)是網(wǎng)站的反爬機(jī)制在起作用——當(dāng)同一個(gè)IP頻繁訪問時(shí),服務(wù)器就會(huì)把咱們的IP關(guān)進(jìn)小黑屋。

python代理ip使用方法:代碼集成輕松爬數(shù)據(jù)

上周有個(gè)做電商的朋友找我吐槽,他們用Python抓取商品價(jià)格時(shí),剛跑半小時(shí)IP就被封了。這時(shí)候代理IP就是救命稻草,通過切換不同IP地址,讓網(wǎng)站以為是多個(gè)用戶在正常訪問。

二、神龍IP為什么適合Python爬蟲?

市面上的代理服務(wù)很多,但很多新手容易踩坑。我用過神龍IP主要是看中他們的SOCKS5協(xié)議支持,比普通HTTP代理更隱蔽。他們的動(dòng)態(tài)IP池每天更新300萬(wàn)+地址,特別適合需要高頻切換的場(chǎng)景。

最省心的是他們提供Windows客戶端,不用在代碼里寫死代理地址。軟件能自動(dòng)切換IP,還能設(shè)置每5分鐘換一次。有次我連續(xù)跑了12小時(shí)爬蟲,通過軟件自動(dòng)更換了144個(gè)IP,目標(biāo)網(wǎng)站全程沒觸發(fā)驗(yàn)證。

三、Python設(shè)置代理IP的3種方法

1. Requests庫(kù)設(shè)置代理

這是最常用的方法,在發(fā)送請(qǐng)求時(shí)直接添加proxies參數(shù)。注意神龍IP的認(rèn)證方式是用戶名密碼雙驗(yàn)證,代碼要這樣寫:

import requests

proxies = {
    'http': 'socks5://用戶名:密碼@proxy.shenlongip.com:端口',
    'https': 'socks5://用戶名:密碼@proxy.shenlongip.com:端口'
}

response = requests.get('目標(biāo)網(wǎng)址', proxies=proxies)

2. Urllib庫(kù)設(shè)置代理

老項(xiàng)目可能會(huì)用這個(gè)庫(kù),需要先創(chuàng)建代理處理器。重點(diǎn)是要設(shè)置雙重認(rèn)證

from urllib.request import ProxyHandler, build_opener

proxy = ProxyHandler({
    'http': 'socks5://用戶名:密碼@proxy.shenlongip.com:端口',
    'https': 'socks5://用戶名:密碼@proxy.shenlongip.com:端口'
})
opener = build_opener(proxy)
response = opener.open('目標(biāo)網(wǎng)址')

3. Selenium瀏覽器代理

需要模擬人工操作時(shí),可以給瀏覽器掛代理。以Chrome為例,通過add_argument方法加載代理:

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server=socks5://用戶名:密碼@proxy.shenlongip.com:端口')

driver = webdriver.Chrome(options=chrome_options)
driver.get('目標(biāo)網(wǎng)址')

四、實(shí)戰(zhàn)案例:電商價(jià)格監(jiān)控

幫朋友做的價(jià)格監(jiān)控系統(tǒng),核心代碼如下。關(guān)鍵點(diǎn)在于隨機(jī)休眠+代理切換的組合拳:

import time
import random
from selenium.webdriver import ChromeOptions

def get_price(url):
     每次請(qǐng)求前更換代理
    options = ChromeOptions()
    options.add_argument(f'--proxy-server=socks5://{get_random_proxy()}')
    
    driver = webdriver.Chrome(options=options)
    driver.get(url)
    
     模擬人工操作
    time.sleep(random.uniform(1,3))
    price = driver.find_element(...)
    
    driver.quit()
    return price

def get_random_proxy():
     調(diào)用神龍IP的API獲取新代理
    return f'用戶名:密碼@代理服務(wù)器:端口' 

五、常見問題解答

Q:代理IP用著用著失效了怎么辦?
A:建議使用神龍IP的自動(dòng)切換功能,他們的軟件支持設(shè)置IP存活時(shí)間,超過設(shè)定時(shí)長(zhǎng)自動(dòng)更換新IP。

Q:爬蟲速度變慢是不是代理的問題?
A:可以先用curl測(cè)試代理響應(yīng)速度。如果延遲超過2秒,建議在神龍IP后臺(tái)切換高速節(jié)點(diǎn),他們有針對(duì)爬蟲場(chǎng)景優(yōu)化的專用線路。

Q:代理認(rèn)證總是失敗怎么回事?
A:檢查用戶名密碼是否包含特殊字符,建議先在客戶端軟件測(cè)試連通性。神龍IP的Windows客戶端有一鍵診斷功能,能快速排查認(rèn)證問題。

最后提醒大家,使用代理IP要遵守網(wǎng)站的服務(wù)協(xié)議。合理設(shè)置請(qǐng)求頻率,建議在代碼中加入隨機(jī)延時(shí)(1-3秒),這樣既保護(hù)目標(biāo)網(wǎng)站服務(wù)器,又能保證咱們的數(shù)據(jù)采集順利進(jìn)行。