Scrapy终端(shell)是一个交互终端,供您在未启动spider的情况下调试您的爬取代码。其本意是用来测试提取数据,你可以将其作为正常的Python终端,在上面测试任何的Python代码。
可以使用的方法:
shelp()
: 打印可用的对象和方法fetch(url[, redirect=True])
: 爬取新的 URL 并更新相关对象fetch(request)
: 通过 request 爬取,并更新相关对象view(response)
: 使用本地浏览器打开爬取的页面
启动终端
使用 shell
来启动Scrapy终端:
Scrapy Shell根据下载的页面会自动创建一些方便使用的对象,例如 Response 对象、Selector 对象。
- 当shell载入后,将得到一个包含response数据的本地 response 变量,输入
response.body
将输出response的包体,输出response.headers
可以看到response的包头。 - 输入
response.selector
时, 将获取到一个response 初始化的类 Selector 的对象,此时可以通过使用response.selector.xpath()
或response.selector.css()
来对 response 进行查询。 - Scrapy也提供了一些快捷方式, 例如
response.xpath()
或response.css()
同样可以生效。
例如:
输出结果如图:
操作实列
Selector 的详细介绍可以参考文章选择器,如下所示,获取文章的标题和内容。
输出结果如图:
spider内调用shell
使用 scrapy.shell.inspect_response 函数 可以在spider内调用shell。
启动爬虫,将会在执行到inspect_response
时进入 shell,当处使用完使用Ctrl-D退出 shell,爬虫会恢复运行。
输出结果如图: