【python大神之路】scrapy的中间件使用流程

首先我们要知道scrapy的基本数据流向

scrapy 数据的基本流向

那个十字框架图我就不画了,数据处理是这样的:
spider -> 引擎-> 调度器 -> requests -> download下载器-> spider -> 引擎 -> pipline
spider指定url,给引擎,引擎让到调度器根据url生成request,丢给下载器;下载器生成response返回数据,数据再经过引擎丢给spider处理;处理完的数据需要保存,在由引擎丢给pipline,保存数据。

scrapy 设置代理

scrapy 设置免费代理

通常,如果不希望自己的ip被人察觉,我们也希望使用代理地址,去请求服务器。有许多免费网站提供免费ip。我们只需要写个中间件,拦截请求接口,给request对象设置proxy ip即可。

做法如下:

免费代理
 class ProxyDownloaderMiddleware:
     def process_request(self, request, spider):
         ip = choice(PROXY_IP_LIST)
         request.meta['proxy'] = "https://" + ip
         return None  # 放行

免费的ip未必好用,有时候会失效,所以有些公司提供人民币玩法,充钱就能变强,这里我们用 快代理 网站,只需要再写个中间件:

class MoneyProxyDownloaderMiddleware:

    def process_request(self, request, spider):
        proxy = "tps138.kdlapi.com:15818"
        request.meta['proxy'] = f"http://{proxy}"

        request.headers['Proxy-Authorization'] = basic_auth_header('username', 'password')
        request.headers["Connection"] = "close"

然后像上面免费版在 settings.py 里配置该中间件即可。

到此,我们讲完了 scrapy 的中间件作用,写法,配置。

最后在命令运行:

scrapy crawl 爬虫名

就可以跑起来我们刚才写的各种中间件了。

Original: https://blog.csdn.net/cdkd123/article/details/127562772
Author: toom_dp2px
Title: 【python大神之路】scrapy的中间件使用流程

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/790933/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球