Q:何为代理
A:如下图(仅作为说明图,不喜勿喷):
Q:为什么要使用代理?
A:服务器会识别爬虫,为了防止被访问的服务器禁止爬虫,中间使用代理服务器是一种有效的方法(之一)。
Q:Python如何实现代理?
A:方法很多,这里只介绍urllib库的ProxyHandler()【因为简单,确可以说明代理的原理】,代码如下:
# --coding:utf-8--
from urllib import request
from urllib import parse
url = 'http://httpbin.org/ip'
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36 Edg/86.0.622.51'
}
rq = request.Request(url, headers=header)
handler = request.ProxyHandler({'http': '106.45.220.65:3256'}) # https://seofangfa.com/proxy/ (代理IP获取网址)
opener = request.build_opener(handler)
resp = opener.open(rq)
print(resp.read())
备注:
1、http://httpbin.org/ip 这个网址可以返回发送请求的IP,这样就可以检查是谁在访问服务器。
2、代码中的106.45.220.65:3256是代理IP及端口,如和我一样的菜鸟想运行代码,可以在https://seofangfa.com/proxy/ 中找免费的代理IP替换。可能需要多次替换尝试才可以运行正常(免费的东西肯定不稳定,需要稳定的就直接购买)