無法直接連接互聯網,需要使用代理時(Scrapy)

在windows系統中,如果無法直接連接互聯網,需要使用代理時該怎麽做呢?

 

1. 在powershell中設置proxy

  背景:使用公司電腦,無法直接訪問互聯網,想要訪問互聯網就得使用代理,但是在控制面板中設置代理的選項被禁用,個人又具有管理員權限的。

  解決方法:

    在powershell中或cmd中先運行以下命令:
      1)http proxy:  set http_proxy=http://host:port 

      2)https proxy:  set https_proxy=https://host:port 

 

2. 針對Scrapy使用代理的方法

  背景:僅僅是為了使Scrapy運行中訪問互聯網時使用代理(實質上是使Scrapy中的DownloaderMiddleware部分使用代理)

  解決方法:

    方法一: 先在powershell中先運行1中的命令,然後再啓動Scrapy程序;

    方法二: 在Scrapy中設置,僅對Scrapy生效:

         1)在setting.py中啓用HttpProxyMiddleware,如下:     

DOWNLOADER_MIDDLEWARES={
     'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware':1       
}

         2) 通過request.meta進行proxy:   

request=Request(url="http://example.com")
requests.meta['proxy']='host:port'
yield request

           3) 若想要隨機使用多個proxy時:

 1 Class MySpider(BaseSpider):
 2     name = "my_spider"
 3     def __init___(self,*args,**kwargs):
 4         super(MySpider,self).__init__(*args,**kwargs)
 5         self.proxy_pool=['proxy_address1','proxy_address2',...,'proxy_addressN']
 6 
 7     def parse(self,response):
 8         if something:
 9             yield self.get_Request(url)
10 
11     def get_request(self,url):
12         req=Request(url=url)
13         if self.proxy_pool:
14             req.meta['proxy'] = random.choice(self.proxy_pool)
15         return req

    方法三:創建代理文件,專門用於設置代理

      1)在scrapy project中創建文件 middlewares.py,寫入以下代碼:

 1 import base64
 2 class ProxyMiddleware(object):
 3     #overwrite process request
 4     def process_request(self,request,spider):
 5         #Set the location of the proxy
 6         request.meta['proxy']="http://proxy_ip:port"
 7 
 8         #use the followig lines if your proxy requires authentication
 9         proxy_user_pass="Username:Password"
10         #setup basic authentication for the proxy
11         encoded_user_pass = base64.encodestring(proxy_user_pass)
12         request.headers['Proxy-Authorization'] = 'Basic' +encoded_user_pass

      2)設置setting.py

1 DOWNLOADER_MIDDLEWARES = {
2     'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware': 110,
3     'project_name.middlewares.ProxyMiddleware': 100,
4 }

 

    

      

 

转载于:https://www.cnblogs.com/riocasture/p/11320117.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值