文章目录
上一节我们了解了如何安装Scrapy,安装后如何用呢?这节开始学习。
在Scrapy中提供一个命令行工具,可以控制scrapy进行各种操作,实现不同功能。本节要先学习这个命令行工具,这样我们就能快速创建scrapy项目和爬虫程序,并进行相关调试和运行。
配置文件
Scrapy有一个默认的配置参数文件叫“scrapy.cfg”,scrapy默认会从这个文件中读取配置参数,该配置文件的标准存放路径有以下三种:
- 系统级路径:
/etc/scrapy.cfg
(Linux或Mac)或C:\scrapy\scrapy.cfg
(Windows) - 用户级:
~/.config/scrapy.cfg
($XDG_CONFIG_HOME
) 和~/.scrapy.cfg
($HOME
) - 项目级:创建项目根目录下的
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
- 语法: