Scrapy爬虫框架-命令行

命令行工具

Scrapy是通过scarpy这个命令行工具来控制的,在这里被称为“Scrapy工具”,以区别于子命令,我们只是称之为“命令”或“Scrapy命令”。

Scrapy 工具提供了几种命令行,为了多种不同的目的,并且每个命令行都接受一系列不同的参数和选项。

配置设置

Scrapy会查找配置参数在ini样式的scrapy.cfg 的文件在标准位置。

  1. /etc/scrapy.cfg或c:\scrapy\scrapy.cfg(全系统),
  2. .config/ clip .cfg ( X D G C O N F I G H O M E ) 和   / . c l i p . c f g ( XDG_CONFIG_HOME)和~/. clip .cfg ( XDGCONFIGHOME) /.clip.cfg(HOME)用于全局(用户范围)设置,以及
  3. scrapy.cfg在根目录(参见下一节)。

这些文件中的设置将按照列出的首选项顺序合并:用户定义的值具有比系统默认值更高的优先级,当定义时,项目范围的设置将覆盖所有其他设置。

环境变量设置
Scrapy还理解并可以通过许多环境变量进行配置。目前,这些包括:

  • SCRAPY_SETTINGS_MODULE (see Designating the settings)
  • SCRAPY_PROJECT (see Sharing the root directory between projects)
  • SCRAPY_PYTHON_SHELL

Scrapy项目的默认结构
在深入研究命令行工具及其子命令之前,让我们先了解一下Scrapy项目的目录结构。
虽然可以修改,但所有Scrapy的项目默认都有相同的文件结构,类似如下:

scrapy.cfg
myproject/
    __init__.py
    items.py
    middlewares.py
    pipelines.py
    settings.py
    spiders/
        __init__.py
        spider1.py
        spider2.py
        ...

scrapy.cfg文件包含了python模块的名字定义了项目的设置。这是一个例子:

[settings]
default = myproject.settings

在项目之间共享根目录

一个项目的根目录,它包含了scrapy.cfg,可以被很多Scrapy项目共享,每个都有自己的配置模块。
在这种情况下,您必须在您的clip .cfg文件的[settings]下为这些设置模块定义一个或多个别名:

[settings]
default = myproject1.settings
project1 = myproject1.settings
project2 = myproject2.settings

默认情况下,这个Scrapy的命令行工具将使用默认设置。使用SCRAPY_PROJECT环境变量指定要使用的不同Scrapy项目:

$ scrapy settings --get BOT_NAME
Project 1 Bot
$ export SCRAPY_PROJECT=project2
$ scrapy settings --get BOT_NAME
Project 2 Bot

使用sracpy工具

你可以直接使用Scrapy没有参数,然后大会打印出参数和可用的命令:

Scrapy X.Y - no active project

Usage:
  scrapy <command> [options] [args]

Available commands:
  crawl         Run a spider
  fetch         Fetch a URL using the Scrapy downloader
[...]

第一行输出会告诉你现在活跃的项目如果你在一个Scrapy项目中,如在项目中:

Scrapy 

创建项目

你主要要做的第一件事对于使用scrapy工具就是创建项目。

scrapy startproject myproject [project_dir]

这将在project_dir目录下创建一个Scrapy项目。如果没有指定project_dir, project_dir将与myproject相同。
进入:

cd project_dir

控制项目

你是用scrapy工具从你的项目中控制/管理它们。
举个例子,创建一个新spider:

scrapy genspider mydomain mydomain.com

一些Scrapy的命令(比如crawl)必须在Scrapy的项目中运行。有关哪些命令必须从项目内部运行,哪些不能,请参阅下面的命令参考资料。

还要记住,在从项目内部运行一些命令时,它们的行为可能略有不同。例如,如果正在获取的url与某个特定的spider关联,fetch命令将使用spider覆盖的行为(例如user_agent属性来覆盖user_agent)。这是有意的,因为fetch命令用于检查spiders如何下载页面。

可用工具命令

本节包含可用的内置命令列表,以及描述和一些使用示例。记住,你总是可以得到更多的信息,每一个命令运行:

scrapy <command> -h

你可以看到所有的可用命令通过:

scrapy -h

-h 帮助。

有两种命令,一种只在一个活动的Scrapy项目中工作(特定于项目的命令),另一种也不工作于活动的Scrapy项目中(全局命令),尽管从一个项目中运行时它们的行为可能略有不同(因为它们将使用项目覆盖的设置)。

全局命令

  • startproject
  • genspider
  • settings
  • runspider
  • shell
  • fetch
  • view
  • version
    项目专属命令:
  • crawl
  • check
  • list
  • edit
  • parse
  • bench

startproject

语法: scrapy startproject <project_name> [project_dir]
不要求在项目中

在project_dir目录下创建一个名为project_name的新剪贴项目。如果没有指定project_dir, project_dir将与project_name相同。

用例:

$ scrapy startproject myproject

genspider

语法:scrapy genspider [-t template]
不要求在项目中

如果从项目内部调用,则在当前文件夹或当前项目的spider文件夹中创建一个新spider。参数设置为爬行器的名称,而用于生成allowed_domains和start_urls爬行器的属性。

用例:

$ scrapy genspider -l
Available templates:
  basic
  crawl
  csvfeed
  xmlfeed

$ scrapy genspider example example.com
Created spider 'example' using template 'basic'

$ scrapy genspider -t crawl scrapyorg scrapy.org
Created spider 'scrapyorg' using template 'crawl'

这只是一个基于预定义模板创建spider的方便快捷命令,但肯定不是创建spider的唯一方法。您可以自己创建spider源代码文件,而不是使用这个命令。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值