首先我们要知道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/
转载文章受原作者版权保护。转载请注明原作者出处!