内容
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之后,爬虫会继续爬到它停止的地方,如上图所示。
网友评论