[scrapy] 2025-04-27 圈点274
摘要:scrapy增加代理IP功能的示例及说明,HttpProxyMiddleware发现结果并不如意,还是被墙;
crapy增加代理的示例,代理可分为需要帐号密码和不需要的情况:示例如下,
1,在middleware.py中增加代理的类:
import base64
class ProxyMiddleware(object):
#上句中必须是object,不能是其它(如HttpProxyMiddleware)
# 重写 request
def process_request(self, request, spider):
# 设置代理IP和端口 proxy
request.meta['proxy'] = "http://YOUR_PROXY_IP:PORT"
# 如果需要帐号和密码,需要以下的内容,没有帐号和密码就忽略如下所有内容
proxy_user_pass = "USERNAME:PASSWORD"
# setup basic authentication for the proxy
encoded_user_pass = base64.encodestring(proxy_user_pass)
request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass
2,修改setting的内容。
DOWNLOADER_MIDDLEWARES = {
'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware': 110,
'project_name.middlewares.ProxyMiddleware': 100,
}
经测试发现有情况,
在上例的示例中,如果如下编辑引用:
from scrapy.downloadermiddlewares.httpproxy import HttpProxyMiddleware
class ProxyMiddleware(HttpProxyMiddleware):
在设置中,就不要引用如下的内容了:
实测中是错误的。同时发现结果并不如意,还是被墙;IP没变。