您的位置:首页 > 其它

Scrapy设置之Analysis

2016-04-08 22:22 267 查看
Analysis:

通过修改这些设置项,可以配置Scrapy通过logs、statistics和telnet来提供性能和调试信息的方式。

Logging:根据严重程度的不同,Scrapy有几种级别的日志:
DEBUG
(最低级别)、
INFO
WARNING
ERROR
CRITICAL
(最高级别)。除此之外还有一个
SILENT
级别,这个级别不会有任何日志输出。把
LOG_LEVEL
设置成某个级别,然后就可以只接收这个级别及以上的日志输出。通常情况下都会把这个选项设置成
INFO
,因为
DEBUG
级别的输出太冗多。Scrapy有个扩展是
Log Stats
扩展,它会打印出每分钟抓取的
Item
和网页的数目。打印的频率由
LOGSTATS_INTERVAL
控制,默认值为60s(即为每分钟的抓取数目),在实际应用中,由于很多爬虫的运行时间都很短,可以视情况而定来设置这个值。日志输出会被写入
LOG_FILE
设置的文件中。除非设置了这个值而且把
LOG_ENABLED
的值设置成了
False
,否则日志都会被输出到标准错误中。最后,如果需要把Scrapy中的标准输出(比如
print
语句)也记录到日志文件中去,可以把
LOG_STDOUT
设置成
True


Stats:
STATS_DUMP
默认情况下是启用的,它负责在爬虫运行完之后把统计数据从
Stats Collector
输出到日志 。把
DOWNLOADER_STATS
设置成
False
可以不记录下载器的数据。同样地,设置
DEPTH_STATS
选项可以控制是否收集站点深度的数据。如果在站点深度上需要更加详尽的信息可以把
DEPTH_STATS_VERBOSE
设置成
True
STATSMAILER_RCPTS
是一个邮件地址列表,例如可以设置成
[my@mail.com]
,当爬虫运行完毕时可以向这些地址发送统计信息。这些设置可能不会经常改动,但是它们有时对调试爬虫是非常有用的。

Telnet:Scrapy有一个内建的telnet控制台,这个控制台提供了一个Python shell,可以在上面运行Scrapy程序。
TELNETCONSOLE_ENABLED
默认情况下是启用的。
TELNETCONSOLE_PORT
选项设置了联系控制台的端口,有时需要重新设置以防冲突。

例子-使用Telnet:

有些情况下你可能需要在爬虫运行时查看它的内部状态,来看一下如何用Telnet做到这一点:

$ pwd
/root/book/ch07/properties
$ ls
properties scrapy.cfg


运行爬虫:

$ scrapy crawl fast



[scrapy] DEBUG: Telnet console listening on 127.0.0.1:6023:6023

如果出现上面的信息就说明telnet已经激活并且正在监听6023端口。现在可以另开一个终端,使用telnet命令来连接:

$ telnet localhost 6023
>>>


这个控制台提供了一个在运行的Scrapy程序中的Python shell。在这里可以检查许多组件,例如可以用
engine
变量来检查引擎,但是如果是为了很快地能了解程序目前的状态的话,可以使用
est()
命令:

>>> est()
Execution engine status
time()-engine.start_time        : 5.73892092705
engine.has_capacity()           : False
len(engine.downloader.active)   : 8
...
len(engine.slot.improgress)     : 10
...
len(engine.scraper.slot.active) : 2


要注意的是,你是在Scrapy引擎里运行这些命令的,假设你运行了以下命令:

>>> import time
>>> time.sleep(1) #Don't do this!


这时你会发现在另外的运行Scrapy程序的终端出现了一个短暂的停顿。在telnet控制台中,可以控制爬虫程序的暂停、继续和停止:

>>> engine.pause()
>>> engine.unpause()
>>> engine.stop()
Connection closed by foreign host.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: