爬蟲代理池設定===閒的無聊
阿新 • • 發佈:2018-11-17
代理池的設定:
代理服務tinyproxy的基本設定
安裝:
apt install tinyproxy
配置:
vim /etc/tinyproxy.conf
修改其中的兩項配置,首先, 將這一行註釋掉
# Allow 127.0.0.1
然後,修改一下預設埠號
Port XXXX (自定義)
重啟一下tinyproxy
sudo systemctl restart tinyproxy
# 支援ubuntu16
如果使用的是雲伺服器,需要新增一下安全組規則:
設定埠範圍為:1703/1703,允許訪問的IP來源設定為0.0.0.0/0
測試tinyproxy是否可用 :
在專案下進入 scrapy shell
(執行scrapy shell時 需切換到 專案.cfg 配置同級目錄下
在shell裡執行:
import requests
requests.get(‘ http://httpbin.org/ip’,proxies={‘http’:'http://主機:埠’}).json()
返回結果為你的代理IP則正常
非分散式代理池設定:
middlewares檔案內設定
import random from scrapy import signals from scrapy.exceptions import NotConfigured class RandomProxyMiddleware(object): def __init__(self,settings):#匯入代理池 self.proxies = settings.getlist('PROXIES') @classmethod def from_crawler(cls,crawler):#匯入中介軟體 if crawler.settings.getbool('HTTPCACHE_ENABLED'): raise NotConfigured return cls(crawler.settings) def process_request(self,request,spider): if 'proxy' not in request.meta: request.meta['proxy'] = random.choices(self.proxies) def process_response(self,request,response,spider): print(request.meta['proxy']) def process_exception(self,request,exception,spider): pass
#setting檔案設定
DOWNLOADER_MIDDLEWARES = {
'xpc.middlewares.XpcDownloaderMiddleware': 749,
}#代理池#系統的是750 開啟這個檔案
HTTPCACHE_ENABLED = True#系統檔案需要開啟 PROXIES = { 'http://xxxxxxxxxxxxxx:埠號', 'http://xxxxxxxxxxxxxx:埠號', 'http://xxxxxxxxxxxxxx:埠號', 'http://xxxxxxxxxxxxxx:埠號', 'http://xxxxxxxxxxxxxx:埠號', 'http://xxxxxxxxxxxxxx:埠號', }
#不知道其他人怎麼設定的,謝謝支援!