爬虫基础学习-配置代理、以及项目实践
代理的类型:
透明:对方可以知道我们的ip
匿名:对方不知道我们的ip,但是知道我们使用了代理
高匿:对方不知道我们的ip,但是不知道我们使用了代理
关键代码:自定义创建opener
proxy_hander = urllib.request.ProxyHandler(proxy)
opener = urllib.request.build_opener(proxy_hander)
response = opener.open(url)
#!/usr/bin/env python3import urllib.request
import urllib.parse
import urllib.error# 创建自己的handerdef hander_open():# 定义URLtry:url = 'http://httpbin.org/get'proxy = {"http": "121.5.130.51:8899" #更换为自己的代理IP}proxy_hander = urllib.request.ProxyHandler(proxy)opener = urllib.request.build_opener(proxy_hander)response = opener.open(url)print(response.read().decode('utf-8'))except urllib.error.URLError as e:print("error: ", e)hander_open()
项目内容:
随机代理实现:
目的:每次请求,都换不同的ip
首先,收集多组ip
然后,每次请求的时候,换个IP
利用random随机模块
#!/usr/bin/env python3
import random
import urllib.request
import urllib.parse
import urllib.error# 定义URL
url = 'http://httpbin.org/post'# 定义多组IP IP更换为自己的代理IP
ip_list = ["http://183.161.45.66:17114","http://119.41.198.172:18350","http://27.191.60.244:15982","http://27.215.237.221:20983",
]# 利用 random 函数 每次随机抽取一个IP
proxy = random.choice(ip_list)
print(proxy)
try:proxy_hander = urllib.request.ProxyHandler({'http': proxy, 'https': proxy})opener = urllib.request.build_opener(proxy_hander)response = opener.open(url)print(response.read().decode('utf-8'))except urllib.error.URLError as e:print("error: ", e)