Scrapy设置之Analysis
2016-04-08 22:22
267 查看
Analysis:
通过修改这些设置项,可以配置Scrapy通过logs、statistics和telnet来提供性能和调试信息的方式。
Logging:根据严重程度的不同,Scrapy有几种级别的日志:
Stats:
Telnet:Scrapy有一个内建的telnet控制台,这个控制台提供了一个Python shell,可以在上面运行Scrapy程序。
例子-使用Telnet:
有些情况下你可能需要在爬虫运行时查看它的内部状态,来看一下如何用Telnet做到这一点:
运行爬虫:
$ scrapy crawl fast
…
[scrapy] DEBUG: Telnet console listening on 127.0.0.1:6023:6023
如果出现上面的信息就说明telnet已经激活并且正在监听6023端口。现在可以另开一个终端,使用telnet命令来连接:
这个控制台提供了一个在运行的Scrapy程序中的Python shell。在这里可以检查许多组件,例如可以用
要注意的是,你是在Scrapy引擎里运行这些命令的,假设你运行了以下命令:
这时你会发现在另外的运行Scrapy程序的终端出现了一个短暂的停顿。在telnet控制台中,可以控制爬虫程序的暂停、继续和停止:
通过修改这些设置项,可以配置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中的标准输出(比如
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.
相关文章推荐
- Android API讲解之:BitmapFactory
- IOS 图片轮播实现原理 (三图)
- PHP - 类型判断和NULL,空值检查
- 区分曼彻斯特和差分曼彻斯特编码
- 京东笔试题的一些小细节
- 0408汉堡包之两人合作
- LVM
- Java集合中的排序API分析
- 七牛云上传图片 NoClassDedFoundError:com.squareup.okhttp.OkHttpClient异常
- 需求分析
- 在Java中如何遍历Map对象
- ubuntu 获取root权限
- Java并发编程系列之二十七:ThreadLocal
- final的用法
- Servlet中设置了Access-Control-Allow-Origin 无效
- 【脚本化文档】——创建和插入节点
- 太用力的人跑不远
- 大叔 Frameworks.Entity.Core 2 PageList
- js--数据结构--树
- R 连接mysql 数据库