【Scrapy】Scrapy教程4——命令行工具

上一节我们了解了如何安装Scrapy,安装后如何用呢?这节开始学习。
在Scrapy中提供一个命令行工具,可以控制scrapy进行各种操作,实现不同功能。本节要先学习这个命令行工具,这样我们就能快速创建scrapy项目和爬虫程序,并进行相关调试和运行。

配置文件

Scrapy有一个默认的配置参数文件叫“scrapy.cfg”,scrapy默认会从这个文件中读取配置参数,该配置文件的标准存放路径有以下三种:

  1. 系统级路径:/etc/scrapy.cfg(Linux或Mac)或C:\scrapy\scrapy.cfg(Windows)
  2. 用户级:~/.config/scrapy.cfg ($XDG_CONFIG_HOME) 和 ~/.scrapy.cfg ($HOME)
  3. 项目级:创建项目根目录下的scrapy.cfg
    其中项目级的优先级最高,其次是用户级和系统级,简单来讲项目级>用户级>系统级,所以通常我们默认只用项目级的。
    Scrapy也可以理解一些配置的环境变量,如:
  • SCRAPY_SETTINGS_MODULE用来设置python的scrapy模块路径
  • SCRAPY_PROJECT用来设置scrapy使用的爬虫程序
  • SCRAPY_PYTHON_SHELL用来设置所使用的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的命令行工具,默认使用的是项目根目录(即上面的最外层目录),因为scrapy的配置文件scrapy.cfg也在根目录下。
scrapy.cfg文件中有下面一行配置,用来设置默认使用的爬虫程序。

[settings]
default = myproject.settings

如果有多个项目在同一个文件夹下,那么可以在scrapy.cfg文件中添加如下设置:

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

然后使用export SCRAPY_PROJECT=project2来设置使用的项目。

Scrapy命令行的使用

查看帮助

我们可以直接在安装了scrapy的python环境下,直接输入scrapy就可以显示scrapy的帮助信息,如下所示,和命令scrapy -h作用一样,注意如果和我一样用的是虚拟环境,需要先进入虚拟环境再执行。

(venv_scrapy) D:\Code\scrapyTutorial>scrapy
Scrapy 2.11.2 - no active project

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

Available commands:
  bench         Run quick benchmark test
  fetch         Fetch a URL using the Scrapy downloader
  genspider     Generate new spider using pre-defined templates
  runspider     Run a self-contained spider (without creating a project)
  settings      Get settings values
  shell         Interactive scraping console
  startproject  Create new project
  version       Print Scrapy version
  view          Open URL in browser, as seen by Scrapy

  [ more ]      More commands available when run from project directory

Use "scrapy <command> -h" to see more info about a command

在上面的帮助信息中,第一行会显示我们安装的scrapy的版本和已激活的项目,下面是scrapy的用法,和可用的命令有哪些,最后一行还提示了如果想相信了解某个命令的详细信息,可以使用scrapy <command> -h来查看每个命令的帮助。

准备项目

后面为了逐一讲解每个命令的作用的,我们需要先有个可以用的项目才能继续讲解,因此先来看如何创建项目和操作项目。
创建项目可以使用命令

scrapy startproject myproject [project_dir]

这个命令将会在project_dir目录下创建一个scrapy的项目,并且项目名称为myproject,如果project_dir省略不指定,则会自动创建一个和项目名称相同的目录。
创建好项目后,需要进入到project_dir目录,即项目根目录对scrapy的项目进行操作。如创建新的爬虫程序:

cd myproject  # 进入scrapy根目录
scrapy genspider mydomain mydomain.com  # 创建爬虫

这里要注意区分下,有scrapy.cfg文件的是根目录,若执行startproject时没指定project_dir,则在根目录下会有一个和项目名称相同的文件夹,这是个默认的爬虫程序目录。
为了方便理解,后面我会把startproject创建的根目录称为项目目录,该目录下包含scrapy的参数配置文件和爬虫程序目录。
爬虫程序就是根目录下创建的文件夹,我称为爬虫程序,因为后面开发爬虫时,主要在这些文件中编写,爬虫程序目录名称可能和根目录名称相同(startproject时不指定project_dir就会相同),一个项目目录中可能有多个爬虫程序目录,每个爬虫程序目录中都包含了爬虫文件、中间件文件、items文件、pipelines文件、设置文件等。
执行爬虫时,可使用scrapy.cfg文件对默认的爬虫程序进行切换,还可通过设置SCRAPY_PROJECT环境变量指定使用的爬虫程序。

可用命令

scrapy中分全局命令(Global commands)和项目命令(Project-only commands)两种,什么意思呢?全局命令只要在scrapy项目的根目录或子目录中都可以使用,而项目命令必须切换到项目目录下才能执行。

全局命令Global Commands

startproject
  • 语法:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值