使用Python代理IP爬蟲主要涉及到兩個庫:requests和randomuseragent。首先,確保已經安裝了這兩個庫。如果沒有安裝,可以使用以下命令安裝:
pip install requests
pip install randomuseragent
接下來,我們將創建一個簡單的Python代理IP爬蟲。這個爬蟲將從給定的URL列表中抓取網頁內容,并使用隨機User-Agent和代理IP來避免被目標網站封禁。
import requests
from randomuseragent import UserAgent
# 代理IP池
proxies = [
{'http': 'http://proxy_ip:port'},
{'http': 'http://another_proxy_ip:port'},
# 更多代理IP...
]
# User-Agent列表
user_agents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0',
# 更多User-Agent...
]
def get_proxy():
return random.choice(proxies)
def get_user_agent():
return random.choice(user_agents)
def fetch_url(url):
proxy = get_proxy()
user_agent = get_user_agent()
headers = {
'User-Agent': user_agent
}
try:
response = requests.get(url, headers=headers, proxies=proxy, timeout=5)
response.raise_for_status()
return response.text
except requests.exceptions.RequestException as e:
print(f"Error fetching {url}: {e}")
return None
def main():
urls = [
'https://www.example.com',
'https://www.example2.com',
# 更多URL...
]
for url in urls:
content = fetch_url(url)
if content:
print(f"Fetched content from {url}")
# 在這里處理網頁內容,例如保存到文件、解析數據等
if __name__ == "__main__":
main()
請注意,你需要將proxies列表中的proxy_ip和port替換為實際的代理IP和端口。同樣,你可以根據需要擴展user_agents列表。
這個示例代碼定義了三個函數:get_proxy()用于從代理IP池中隨機選擇一個代理IP,get_user_agent()用于從User-Agent列表中隨機選擇一個User-Agent,fetch_url(url)用于根據給定的URL抓取網頁內容。在main()函數中,我們定義了一個URL列表,并使用fetch_url()函數逐個抓取這些URL的內容。你可以根據需要處理抓取到的網頁內容,例如保存到文件、解析數據等。