使用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的内容。你可以根据需要处理抓取到的网页内容,例如保存到文件、解析数据等。