爬虫蜘蛛Scrapy shell之配置及启动shell详解 (25)python SCRAPY最新教程1.51以上版本
Scrapy shell是一个交互式shell,您可以非常快速地尝试调试您的抓取代码,而无需运行蜘蛛。它用于测试数据提取代码,但您实际上可以使用它来测试任何类型的代码,因为它也是常规的Python shell。
shell用于测试XPath或CSS表达式,看看它们是如何工作的,以及它们从你试图抓取的网页中提取的数据。它允许您在编写蜘蛛时以交互方式测试表达式,而无需运行蜘蛛来测试每个更改。
一旦熟悉了Scrapy shell,您就会发现它是开发和调试蜘蛛的宝贵工具。
配置
如果安装了IPython,Scrapy shell将使用它(而不是标准的Python控制台)。该IPython的控制台功能更强大,并提供智能自动完成和彩色输出,等等。
我们强烈建议您安装IPython,特别是如果您正在使用Unix系统(IPython擅长)。有关 详细信息,请参阅IPython安装指南。
Scrapy也支持bpython,并且会尝试在IPython 不可用的地方使用它。
通过scrapy的设置,您可以配置为使用中的任何一个 ipython
,bpython
或标准的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
,所以shell
将index.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.
评论被关闭。