1. 程式人生 > >代理池的使用

代理池的使用

代理池的使用

伺服器會檢測某個IP在單位時間內的請求次數,如果超過了某個閥值,那麼伺服器會直接拒絕,返回一些錯誤資訊

代理的設定、代理池的維護、付費代理的使用、ADSL撥號代理的搭建方法

多種請求庫的代理設定方法

代理池的維護

代理池的基本模組:儲存模組、獲取模組、檢測模組、介面模組

儲存模組:使用redis的有序集合,用來做代理的去重和狀態標識

獲取模組:此模組儘量從不同來源獲取,儘量抓取高匿代理,並儲存到資料庫

檢測模組:需要定時檢測資料庫中的代理,根據不同的檢測結果來對代理設定不同的標識

藉口模組:需要用API來提供對外服務的介面,介面通過連線資料庫並通過web形式返回可用代理

在其他專案上使用代理池:

1.修改代理池:

將代理池檢測的URL修改成需要爬取的網站,以便於把被該網站禁封掉的代理剔除掉,留下可用代理;

同時訪問代理介面,介面設定為5555,訪問http://127.0.0.1:5555/random,即可獲取到可用代理

2.再定義一個函式來獲取隨機代理:

PROXY_POOL_URL = 'http://127.0.0.1:5555/random'

def get_proxy(self):
    '''從代理池獲取代理'''
    try:
        response = requests.get(PROXY_POOL_URL)
        if
response.status_code == 200: print("Get Proxy",response.text) return response.text return None except requests.ConnectionError: return None

如果為scrapy框架,在middleware.py中設定:

class ImageProxyMiddleware(object):
    def process_request(self,request,spider):
        proxy = requests.get(PROX_POOL_URL).text
        request.meta['proxy'
] = proxy