我也正在学scrapy,题主遇到的问题我正好经历过。 熟悉框架图,可以看到每个request请求都经过DownloaderMiddlewares,然后才到下载器,例如自带的添加header、timeout等都是在DownloaderMiddlewares里面编写组件启用实现的。 基本思路: 编写middlewares.py中,编写自定义组件例如ProxyMiddleware,目的在于为每个request设置代理。 每个request经过ProxyMiddleware时候,在这里面编写你处理方法[调用API获取可用IP、添加代理] 启用组件。 参看文档:官方DownloaderMiddlewares教程 我之前也用过付费的包月IP,免费和付费区别主要在于稳定性,想了一下其实可以自己动手写一个抓取免费IP的库,然后再组件里面调用,基本想法就是抓取几个免费的IP站点,然后验证,得到多个短时间可用的IP列表,这样一定程度上节省购买付费代理IP的成本,囧。
我也正在学scrapy,题主遇到的问题我正好经历过。
熟悉框架图,可以看到每个request请求都经过DownloaderMiddlewares,然后才到下载器,例如自带的添加header、timeout等都是在DownloaderMiddlewares里面编写组件启用实现的。
基本思路:
参看文档:官方DownloaderMiddlewares教程
我之前也用过付费的包月IP,免费和付费区别主要在于稳定性,想了一下其实可以自己动手写一个抓取免费IP的库,然后再组件里面调用,基本想法就是抓取几个免费的IP站点,然后验证,得到多个短时间可用的IP列表,这样一定程度上节省购买付费代理IP的成本,囧。