Scrapy 通过代理(Proxy)爬取外部网站

来源:互联网 发布:mac上键盘灯不能点亮 编辑:程序博客网 时间:2024/05/16 09:06

Scrapy 通过代理(Proxy)爬取外部网站

通常我们不需要特殊处理就能直接的访问WWW。但当你处于内部网络通过代理访问外部的时候,或者一些特殊的情况下,你会需要这个技能。

默认你已经会用Scrapy制作蜘蛛了。你可以参考我的另一个介绍页面,或者其他更详尽的教程。

最简单直接的办法

就是在蜘蛛的开头设置系统环境变量像这样:

import os# 设置相应的代理用户名密码,主机和端口号os.environ["http_proxy"] = "http://user:password@proxy.internal.server.com:8080"class YourCrawlSpider(CrawlSpider):

统一的解决方案

如果你蜘蛛很多,想用统一的办法,那么你往下看。

  • 第一步需要创建一个中间插件,安插到每个Request发出去之前,补充上Proxy的信息,像这样:
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
  • 然后到setting里面启用这个插件
DOWNLOADER_MIDDLEWARES = {     'middlewares.ProxyMiddleware': 90,}

这样之后,所有的蜘蛛都可以通过代理出去遨游啦。

原创粉丝点击