Scrapy爬虫----(一)命令行工具

上一篇博文《python(2.7版本)安装scrapy》文章的末尾介绍安装了IPython工具,使用到了scrapy shell,作为一个装b如风,常伴吾身的男人,基本的是要熟悉命令行的使用。由于scrapy爬虫在创建项目、自动生成spider以及检查xpath路径的正确性等过程中均会用到命令行工具,文章中将介绍一下常用的一些命令。


一、全局命令(cmd中输入scrapy -h查看)

  • startproject
  • settings
  • runspider
  • shell
  • fetch
  • view
  • version
  • bench

常用最多的几个命令是startproject、shell、view、version。

  1. startproject—创建项目命令

    语法:scrapy startproject <project_name>
    前置条件:项目不需要存在
    示例:scrapy startproject TestDemo001
    进入到相应的文件目录下,打开cmd,输入以上命令,则会在相应的文件目录下建立一个项目,如下图:
    Scrapy爬虫----(一)命令行工具

  2. shell—创建一个shell环境调试response的命令

    语法:scrapy shell <url>
    前置条件:项目不需要存在
    示例:scrapy shell "http://www.yetianlian.com/"
    打开cmd命令窗口,运行该命令,(安装IPython的情况下默认启动IPython编辑器)如下图:
    Scrapy爬虫----(一)命令行工具
    如果不想输出log可以使用这个命令:
    scrapy shell --nolog "http://www.yetianlian.com/"
    效果如下图:
    Scrapy爬虫----(一)命令行工具
    左侧标记部分是scrapy shell 可使用的命令,其中view <response>(查看页面的响应部分,处理含有动态js网址时较实用)和response.xpath(查看xpath路径选取的正确性的)命令经常使用(需注意!)

  3. view—查看页面内容

    语法:scrapy view <url>
    前置条件:项目不需要存在
    示例:scrapy view "http://www.yetianlian.com/"
    打开cmd命令窗口,运行该命令,在浏览器中打开指定的URL,如下图:
    Scrapy爬虫----(一)命令行工具

  4. version—查看版本信息

    语法:scrapy version [-v]
    前置条件:项目不需要存在
    示例:scrapy version [-v]
    打开cmd命令窗口,运行该命令,显示相应scrapy的版本号,如下图:
    Scrapy爬虫----(一)命令行工具
    此命令可以用来查看scrapy是否安装成功,该命令同时输出Python、Twisted以及平台的信息,方便bug的提交。

  5. settings—查看配置文件参数命令

    语法:scrapy settings [options]
    前置条件:项目不需要存在
    示例:scrapy settings --get BOT_NAME
    输出:scrapybot
    显示settings中的具体设置的设定值

  6. runspider 运行爬虫命令

    语法:scrapy runspider <spider_file.py>
    前置条件:项目不需要存在
    示例:scrapy runspider ytl.py
    未创建项目的情况下,运行一个编写好的spider模块

  7. fetch 显示爬取过程

    语法:scrapy fetch [url]
    前置条件:项目存在/不存在均可
    示例:scrapy fetch "http://www.yetianlian.com/"
    命令其实是在标准输出中显示调用一个爬虫来爬取指定的url的全过程。

  8. bench 硬件测试命令

    语法:scrapy bench
    前置条件:项目不需要存在
    测试scrapy在硬件上运行的效率


二、项目命令

  • crawl
  • check
  • list
  • edit
  • parse
  • genspider
  • deploy

最常用的几个命令是crawl、genspider。

  1. genspider—通过模板生成scrpay爬虫

    查看scrapy genspider 的模板
    命令:scrapy genspider -l
    Scrapy爬虫----(一)命令行工具
    语法:scrapy genspider [-t template] <name> <domain>
    前置条件:项目需要存在
    展示basic模板的内容:scrapy genspider -d basic
    Scrapy爬虫----(一)命令行工具
    示例:创建spider.py,命令:scrapy genspider -t basic ytl yetianlian.com
    Scrapy爬虫----(一)命令行工具
    文件目录图示:
    Scrapy爬虫----(一)命令行工具
    自动生成的代码图示:
    Scrapy爬虫----(一)命令行工具
    由此可见,genspider生成的默认代码与刚doc窗口展示的代码相同,其中命令中<name>代表爬虫的唯一名称<domain>代表的是爬虫所允许爬取的域名范围。

  2. crawl—启动爬虫命令

    语法:scrapy crawl <spider>
    前置条件:项目需要存在
    示例:scrapy crawl ytl
    启动命名为ytl的爬虫(需要cd进入相应的文件目录下,运行该命令)

  3. check—检查爬虫完整性

    语法:scrapy check [-l] <spider>
    前置条件:项目需要存在
    示例:scrapy check ytl
    检查一些语法、import和warning等错误

  4. list—查看爬虫列表命令

    语法:scrapy list
    前置条件:项目需要存在
    示例:scrapy list
    查看一下这个项目里面目前有哪些爬虫

  5. edit—编辑爬虫命令

    语法:scrapy edit <spider>
    前置条件:项目需要存在
    示例:scrapy edit ytl
    用设定的编辑器编辑给定的spider,该命令是提供一个快捷方式,开发者可以*选择其他工具或者IDE来编写和调试spider。(Linux系统下)

  6. parse—获取给定的URL使用相应的spider分析处理

    语法:scrapy parse <url> [options]
    前置条件:项目需要存在
    示例:scrapy parse "http://www.yetianlian.com/" -c parse
    如果提供–callbac选项,可以自动检测spider中的解析方法进行处理。支持以下的选项:

    –spider=SPIDER: 没有指定spider的情况下其程序搜索,用这个选项可以强行指定某个spider

    –a NAME=VALUE: 用来设定spider需要的参数,可以多个

    –callback或-c: 指定spider里面用于处理response的函数,没有强行制定的话,默认使用parse函数

    –pipelines:用来指定后续的pipelines,可以灵活定制

    –rules或-r: 通过CrawlSpider设定的规则来选取对应的函数当作解析response的回调函数

    –noitems: 不显示抓取的items

    –nolinks: 不显示提取的链接

    –nocolour: 输出的结果不要高亮显示(不建议用)

    –depth或-d: 设置爬取深度,默认为1

    –verbose或-v: 显示被爬取的每层的相关信息

  7. deploy命令

    语法:scrapy deploy [<target:project>|-l<target>|-L]
    目的:将项目部署到scrapyd服务。


结尾

本文中列出来了一些我们爬虫中会常用的命令和解释,接下来的文章会主要以项目实战进行讲解和记录,欢迎大家留言交流讨论。