通常我们不需要特殊处理就能直接的访问WWW。但当你处于内部网络通过代理访问外部的时候,或者一些特殊的情况下,你会需要这个技能。
默认你已经会用Scrapy制作蜘蛛了。你可以参考我的另一个介绍页面,或者其他更详尽的教程。
就是在蜘蛛的开头设置系统环境变量像这样:
import os
# 设置相应的代理用户名密码,主机和端口号
os.environ["http_proxy"] = "http://user:[email protected]:8080"
class YourCrawlSpider(CrawlSpider):
如果你蜘蛛很多,想用统一的办法,那么你往下看。
class ProxyMiddleware(object):
# overwrite process request
def process_request(self, request, spider):
# 设置代理的主机和端口号
request.meta['proxy'] = "http://proxy.internal.server.com:8080"
# 设置代理的认证用户名和密码
proxy_user_pass = "user:password"
encoded_user_pass = base64.encodestring(proxy_user_pass)
# 设置代理
request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass
DOWNLOADER_MIDDLEWARES = {
'middlewares.ProxyMiddleware': 90,
}
这样之后,所有的蜘蛛都可以通过代理出去遨游啦。