程序员用一个爬虫小案例,带你了解scarpy爬虫框架

内容

Scrapy shell

只要了解了Scrapy shell,就会发现它是开发和调试你的爬虫的一个非常宝贵的工具。

配置shell

可以通过scrapy设置配置为使用中的任何一个 ipython,bpython或标准python外壳,安装无论哪个。这是通过设置SCRAPY_PYTHON_SHELL环境变量来完成的; 或通过在scrapy.cfg中定义它:

启动shell

使用shell命令,可以启动Scrapy shell,:

其中,是您要抓取的网址。

shell也适用于本地文件。如果你想玩一个网页的本地副本,这可以很方便。shell了解本地文件的以下语法:

注意

当使用相对文件路径时,是显式的,并在它们前面./(或../相关时)。 将不会像一个人所期望的那样工作(这是设计,而不是一个错误)。scrapy shell index.html

因为shell喜欢文件URI上的HTTP URL,并且index.html在语法上类似example.com, shell会将其视为index.html域名并触发DNS查找错误:

shell将不会预先测试index.html 当前目录中是否存在调用的文件。

使用shell

Scrapy shell只是一个普通的Python控制台,为方便起见,它提供了一些额外的快捷方式功能。

可用快捷键

可用Scrapy对象

Scrapy shell自动从下载的页面创建一些方便的对象,如Response对象和 Selector对象(对于HTML和XML内容)。

这些对象是:

shell会话的示例

下面是一个典型的shell会话示例,我们首先抓取 http://scrapy.org页面,然后继续抓取https://reddit.com 页面。最后,我们将(Reddit)请求方法修改为POST并重新获取它获取错误。我们通过在Windows中键入Ctrl-D(在Unix系统中)或Ctrl-Z结束会话。

然后,shell获取URL(使用Scrapy下载器)并打印可用对象和有用的快捷方式列表(您会注意到这些行都以[s]前缀开头):

之后,我们可以开始使用对象:

从爬虫调用shell检查响应

在检查爬虫的某一点被处理的响应,如果只检查你期望的响应到达那里。

这可以通过使用该scrapy.shell.inspect_response功能来实现。

给大家打一个怎么从爬虫调用它的例子:

当你运行爬虫,你会得到类似的东西:

再检查提取代码是否正常工作:

可以在Web浏览器中打开响应,看一下有没有响应:

最后,您按Ctrl-D(或Windows中的Ctrl-Z)退出外壳并继续抓取:

当不能使用fetch此处的快捷方式,因为Scrapy引擎被shell阻止。在离开shell之后,爬虫会继续爬到它停止的地方,如上图所示。

你可能感兴趣的:(程序员用一个爬虫小案例,带你了解scarpy爬虫框架)