php spider shell,Scrapy Shell

配置Shell

shell 可以通过安装 IPython(用于交互式计算)控制台,它是强大的交互式的Shell,提供自动完成,彩色输出等功能。

如果您在UNIX平台上工作,那么最好安装 IPython。 如果有IPython的无法访问,您也可以使用bpython。

您可以通过设置 SCRAPY_PYTHON_SHELL 环境变量或者在 scrapy.cfg 文件中定义配置 Shell,如下图所示:

[settings]

shell = bpython

启动Shell

Scrapy shell 可以用下面的命令来启动:

scrapy shell

url 是指定为需要进行数据抓取的URL

使用Shell

shell提供一些附加快捷方式和Scrapy对象,如下所述:

可用快捷方式

shell提供可在项目中使用的快捷方式如下:

S.N

快捷方式和说明

1

shelp()

它提供了可用对象和快捷方式的帮助选项

2

fetch(request_or_url)

它会从请求或URL的响应收集相关对象可能的更新

3

view(response)

可以在本地浏览器查看特定请求的响应,观察和正确显示外部链接,追加基本标签到响应正文。

可用Scrapy对象

shell在项目中提供以下可用Scrapy对象:

S.N.

对象和说明

1

crawler

它指定当前爬行对象

2

spider

如果对于当前网址没有蜘蛛,那么它将通过定义新的蜘蛛处理URL或蜘蛛对象

3

request

它指定了最后采集页面请求对象

4

response

它指定了最后采集页面响应对象

5

settings

它提供当前Scrapy设置

Shell会话示例

让我们试着刮取 scrapy.org 网站,然后开始从 yiibai.com 抓取数据,如下所述:

在继续之前,我们将首先启动shell,执行如下面的命令:

scrapy shell 'http://scrapy.org' --nolog

当使用上面的URL,Scrapy将显示可用的对象:

[s] Available Scrapy objects:

[s] crawler

[s] item {}

[s] request

[s] response <200 http://scrapy.org>

[s] settings

[s] spider

[s] Useful shortcuts:

[s] shelp() Provides available objects and shortcuts with help option

[s] fetch(req_or_url) Collects the response from the request or URL and associated objects will get update

[s] view(response) View the response for the given request

接着,对象的工作开始,如下所示:

>> response.xpath('//title/text()').extract_first()

u'Scrapy | A Fast and Powerful Scraping and Web Crawling Framework'

>> fetch("http://reddit.com")

[s] Available Scrapy objects:

[s] crawler

[s] item {}

[s] request

[s] response <200 https://www.yiibai.com/>

[s] settings

[s] spider

[s] Useful shortcuts:

[s] shelp() Shell help (print this help)

[s] fetch(req_or_url) Fetch request (or URL) and update local objects

[s] view(response) View response in a browser

>> response.xpath('//title/text()').extract()

[u'reddit: the front page of the internet']

>> request = request.replace(method="POST")

>> fetch(request)

[s] Available Scrapy objects:

[s] crawler

...

从Spider检查响应调用Shell

您可以检查它是由蜘蛛处理的响应,只有期望得到的响应。

例如:

import scrapy

class SpiderDemo(scrapy.Spider):

name = "spiderdemo"

start_urls = [

"http://yiibai.com",

"http://yiibai.org",

"http://yiibai.net",

]

def parse(self, response):

# You can inspect one specific response

if ".net" in response.url:

from scrapy.shell import inspect_response

inspect_response(response, self)

正如上面的代码所示,可以从蜘蛛调用shell,通过使用下面的函数来检查响应:

scrapy.shell.inspect_response

现在运行的蜘蛛,应该会得到如下界面:

2016-02-08 18:15:20-0400 [scrapy] DEBUG: Crawled (200) (referer: None)

2016-02-08 18:15:20-0400 [scrapy] DEBUG: Crawled (200) (referer: None)

2016-02-08 18:15:20-0400 [scrapy] DEBUG: Crawled (200) (referer: None)

[s] Available Scrapy objects:

[s] crawler

...

>> response.url

'http://yiibai.org'

您可以使用下面的代码检查提取的代码是否正常工作:

>> response.xpath('//div[@class="val"]')

It displays the output as

[]

上面一行只显示空白输出。现在可以调用 shell 来检查响应,如下图所示:

>> view(response)

It displays the response as

True

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值