Scrapy shell是一个交互式shell,您可以非常快速地尝试调试您的抓取代码,而无需运行蜘蛛。它用于测试数据提取代码,但您实际上可以使用它来测试任何类型的代码,因为它也是常规的Python shell

shell用于测试XPath或CSS表达式,看看它们是如何工作的,以及它们从你试图抓取的网页中提取的数据。它允许您在编写蜘蛛时以交互方式测试表达式,而无需运行蜘蛛来测试每个更改。

一旦熟悉了Scrapy shell,您就会发现它是开发和调试蜘蛛的宝贵工具。

配置

如果安装了IPythonScrapy shell将使用它(而不是标准的Python控制台)。该IPython的控制台功能更强大,并提供智能自动完成和彩色输出,等等。

我们强烈建议您安装IPython,特别是如果您正在使用Unix系统(IPython擅长)。有关 详细信息,请参阅IPython安装指南。

Scrapy也支持bpython,并且会尝试在IPython 不可用的地方使用它。

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

[settings]
shell = bpython

启动

要启动Scrapy shell,您可以使用如下shell命令:

scrapy shell <url>

在哪里<url>是您要抓取的URL。

shell也适用于本地文件。如果您想要使用网页的本地副本,这可能很方便。shell了解本地文件的以下语法:

# UNIX-style
scrapy shell ./path/to/file.html
scrapy shell ../other/path/to/file.html
scrapy shell /absolute/path/to/file.html

# File URI
scrapy shell file:///absolute/path/to/file.html

注意

使用相对文件路径时,请明确并在其前面添加./(或../在相关时)。 不会像人们预期的那样工作(这是设计,而不是错误)。scrapy shell index.html

因为shell优先于文件URI的HTTP URL,并且index.html在语法上类似于example.com,所以shellindex.html视为域名并触发DNS查找错误:

$ scrapy shell index.html
[ ... scrapy shell starts ... ]
[ ... traceback ... ]
twisted.internet.error.DNSLookupError: DNS lookup failed:
address 'index.html' not found: [Errno -5] No address associated with hostname.

shell如果index.html 当前目录中存在调用的文件,则不会事先测试。再次,明确。

评论被关闭。