scrapy框架有感

1946 查看

现在时间是2016年,爬虫借着大数据的东风开始火起来。

用了一段时间scrapy,也没有看过源码(因为看不懂),但是对于scrapy的流程还算了解,并且通过代码进行过测试。

这里说一下scrapy的坏处,对个人来说,其实他的文档有些地方存在误导,当然我指的是中文文档,英文也看不懂。

下面说一下一些自己的看法,格式是标题加内容,区分通过数字。

1,scrapy流程问题中下载和请求有什么区别

scrapy官方文档中的流程图
spider通过engine产生Requests给Scheduler,之后通过Downloader产生Responses。这里有一个诡异的现象,比如我们通过request这个库写一个爬去百度的爬虫

import request
page = request.get('http://www.baidu.com')

可能request拼错了

这样的一行命令,就已经实现了把百度的页面下载下来这个功能,那么请求和下载在这行代码体现在哪里?

每一个请求的过程,就已经实现了下载,换句话说,请求就是下载。

那么,所谓scrapy的请求和下载是什么?
请求,就是url
下载,就是请求url或者说访问url

知道了这一点,很多东西都可以理解
比如,下载中间件这个东西
他是在parse函数前还是后执行?肯定是前啊,因为parse是下载
还有就是scrapy.Request在中间件之前还是之后?按照文档说法,Request通过下载中间件到下载啊,应该是之前啊,但其实,scrapy.Request在中间件后面执行。因为它是下载里面的(请求就是下载)。

当然,如果上面你不相信的话,可以试一下换代理,中间件需要这样一句代码

request.meta['proxy'] = 'http://192.13.2.2:8888'

之后,才是才是请求呢。

还有很多东西可以想得通。
比如实现了下载中间件的方法之后,爬虫到了流程的哪一部,这个我不知道该怎么说清楚。
还有就不列举了。

最后,很多工具你觉得很烂,应该是你用的不好。