『Scrapy 工具』Command line tool 用于控制 Scrapy ,是包括带有一组参数和选项的各种对象的命令。

基于 Python3Scrapy 爬虫框架 中数据爬取过程中 Scrapy 工具提供的每个命令都接受一组不同的参数和选项。可以使用命令行完成对应设置内容。

Scrapy 版本:2.6

写出scrapy的基本组件及功能(Scrapy2.6Command)(1)

在这里插入图片描述

配置设置

每个 scrapy 项目下都会生成一个 scrapy.cfg 配置文件,这部分内容自动生成不需要进行操作,未来配置一下项目中可能会进行调整。

写出scrapy的基本组件及功能(Scrapy2.6Command)(2)

在这里插入图片描述

Scrapy 默认项目结构

使用命令行创建目录。

scrapy startproject myproject

默认生成目录结构。

写出scrapy的基本组件及功能(Scrapy2.6Command)(3)

在这里插入图片描述

根目录下的 scrapy.cfg 默认生成,包含设置中的配置模块。

写出scrapy的基本组件及功能(Scrapy2.6Command)(4)

在这里插入图片描述

Scrapy 共享项目根目录

多个项目可以共享 scrapy.cfg 但是要设置项目需要settings。

写出scrapy的基本组件及功能(Scrapy2.6Command)(5)

在这里插入图片描述

默认使用default设置,可以使用命令行进行修改。

export SCRAPY_PROJECT=project2 scrapy settings --get BOT_NAME

可用命令行工具startproject 项目创建

语法结构

scrapy startproject <project_name> [project_dir]

示例: 创建项目名称为『myproject』的爬虫项目。

> scrapy startproject myproject New Scrapy project 'myproject', using template directory 'D:\xxxx\Anaconda3_5.2.0\lib\site-packages\scrapy\templates\project', created in: C:\Users\Lenovo\Desktop\xxxx\myproject You can start your first spider with: cd myproject scrapy genspider example example.com

genspider 项目管理

语法结构

scrapy genspider [-t template] <name> <domain or URL>

示例: 进入项目目录创建『myspider』的爬虫脚本。

cd [project_dir] # 创建一个新的含作用域的Spider > scrapy genspider myspider myspider.com Created spider 'myspider' using template 'basic' in module: myproject.spiders.myspider # 创建一个新的不含作用域的Spider > scrapy genspider myspider " " Created spider 'myspider' using template 'basic' in module: myproject.spiders.myspider # 2.6版本新方式 > scrapy genspider -t crawl genspider genspider.com Created spider 'genspider' using template 'crawl' in module: myproject.spiders.genspider

crawl 爬虫启动

语法结构

scrapy crawl <spider>

示例: 启动名称为『myspider』的爬虫脚本。

> scrapy crawl myspider [ ... myspider starts crawling ... ]

check 脚本检查

语法结构

scrapy check [-l] <spider>

示例: 在保证有项目的前提下为『myspider』检查脚本错误。

> scrapy check myspider ---------------------------------------------------------------------- Ran 0 contracts in 0.010s OK

list 显示爬虫脚本列表

语法结构

scrapy list

示例: 在保证有项目的前提下显示『myproject』下的全部爬虫列表。

> scrapy list myspider

edit 脚本编辑

语法结构

scrapy edit <spider>

示例: 这个有点鸡肋,直接在IDE环境下编辑吧。

> scrapy edit spider1

fetch 查看获取页面

语法结构

scrapy fetch <url>

示例: 相当于进行request获取页面的 txt 数据。

> scrapy fetch --nolog http://www.baidu.com [ ... html content here ... ] # 打印响应的 HTTP 标头 > scrapy fetch --nolog --headers http://www.baidu.com [ ... responde headers ... ] # 不遵循 HTTP 3xx 重新定向 > scrapy fetch --nolog --no-redirect http://www.baidu.com

view 浏览器显示

语法结构

scrapy view <url>

示例: 使用默认浏览器中打开指定的 URL。

> scrapy view http://www.baidu.com [ ... browser starts ... ]

写出scrapy的基本组件及功能(Scrapy2.6Command)(6)

在这里插入图片描述

shell 命令

语法结构

scrapy shell [url]

示例:

> scrapy shell http://www.baidu.com [ ... scrapy shell starts ... ]

写出scrapy的基本组件及功能(Scrapy2.6Command)(7)

在这里插入图片描述

parse 页面解析

语法结构

scrapy parse <url> [options]

示例: 解析指定的url页面数据,进行数据的提取。需要完成完整的数据抓取操作,建议在IDE中进行操作。

> scrapy parse http://www.baidu.com/ -c parse_item [ ... scrapy parse_item starts ... ]

settings 获取设置信息

语法结构

scrapy settings [options]

示例: 获取在settings.py中的设置信息。直接在IDE中查看比较方便。

> scrapy settings --get BOT_NAME myproject

runspider 运行爬虫脚本

语法结构

scrapy runspider <spider_file.py>

示例: 可以在无项目的状态下直接用该命令执行spider脚本文件。

> scrapy runspider myspider.py [ ... spider starts crawling ... ]

version 版本查阅

语法结构

scrapy version [-v]

示例: 查看当前使用的Scrapy框架版本。

> scrapy version Scrapy 2.6.0

bench 基准测试

语法结构

scrapy bench

示例: 功能有些类似ping对应的IP地址,用于测试使用。

> scrapy bench

写出scrapy的基本组件及功能(Scrapy2.6Command)(8)

在这里插入图片描述

COMMANDS_MODULE 自定义自定义命令

在 settings.py 中设置自定义命令模块,已有的命令行足够使用,基本无用。如果有需要自行在settings.py中添加。

COMMANDS_MODULE = 'myproject.commands'

自定义创建 crawlall.py 命令模块。

from scrapy.commands import ScrapyCommand class Command(ScrapyCommand): requires_project = True def syntax(self): # 业务逻辑 def short_desc(self): # 业务逻辑 def run(self, args, opts): # 业务逻辑

自定义注册

框架源码中在 setup.py 中添加。

from setuptools import setup, find_packages setup(name='scrapy-mymodule', entry_points={ 'scrapy.commands': [ 'my_command=my_scrapy_module.commands:MyCommand', ], }, )

自定义验证

注册后进行验证是否添加成功。

> scrapy -h

写出scrapy的基本组件及功能(Scrapy2.6Command)(9)

,