Scrapy设置之Analysis

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

  • Logging:根据严重程度的不同,Scrapy有几种级别的日志:DEBUG(最低级别)、INFOWARNINGERRORCRITICAL(最高级别)。除此之外还有一个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设置成TrueSTATSMAILER_RCPTS是一个邮件地址列表,例如可以设置成[[email protected]],当爬虫运行完毕时可以向这些地址发送统计信息。这些设置可能不会经常改动,但是它们有时对调试爬虫是非常有用的。

  • 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.

你可能感兴趣的:(scrapy,网络爬虫)