天天看點

scrapy代理池-爬取

首先去買一個代理,根據廠家提供的api,去封裝成一個springBoot服務(當然flask,等任何都可以)。請求就能傳回一個代理ip(如果你不會可以去參考我以前的部落格,在我的部落格中搜springBoot或者flask就有相關的封裝資料-以前買過的是阿布雲的代理)

scrapy代理池-爬取

完成上述後,我們就開始。首先

安裝faker(一個模拟資料的架構) 

編寫python代碼

import faker
import requests


class ProxyMiddleware(object):
    # 定義一個請求之前的方法
    def process_request(self, request, spider):
        # 随機擷取一個代理
        url = 'http://192.168.31.23:5000/random'
        proxy = requests.get(url).text
        # request.meta['proxy'] = 'https://' + '46.4.202.33:7000'
        ua = faker.Faker(locale='zh_CN').chrome()
        request.headers.setdefault('User-Agent', ua)
        return None
           

寫好之後,将代碼複制到middlewares.py中

scrapy代理池-爬取

 打開scrapy的setting

scrapy代理池-爬取

在檔案中搜尋downloader

scrapy代理池-爬取

将剛剛寫到middlewares.py中的class類名複制下來(或者記下來-叫做ProxyMiddleware),寫進去。

scrapy代理池-爬取

後面的543代表的是優先級,scrapy支援,多個不同的 代理接口一起爬取。

ok,配置完畢,就運作吧。

scrapy crawl 爬蟲的name ,運作成功

scrapy代理池-爬取