Scrapy command line tool - littleboy12580/learning_python GitHub Wiki

概念

Scrapy是通过 scrapy 命令行工具进行控制的。 这里称之为 “Scrapy tool” 以用来和子命令进行区分。 对于子命令,称为 “command” 或者 “Scrapy commands”。

Scrapy tool 针对不同的目的提供了多个命令,每个命令支持不同的参数和选项

调整设置

Scrapy会在以下路径中寻找记录了配置参数的 scrapy.cfg 文件, 该文件以ini的方式记录:

  1. /etc/scrapy.cfg 或 c:\scrapy\scrapy.cfg (系统层面)
  2. ~/.config/scrapy.cfg ($XDG_CONFIG_HOME) 及 ~/.scrapy.cfg ($HOME) 作为全局(用户层面)设置
  3. 在scrapy项目根路径下的 scrapy.cfg

用户定义的值具有比系统级别的默认值更高的优先级, 而项目定义的设置则会覆盖其他

Scrapy也会读取并通过环境变量来设置. 目前支持的有:

  • SCRAPY_SETTINGS_MODULE
  • SCRAPY_PROJECT

scrapy 可用的工具命令(tool commands)

Scrapy提供了两种类型的命令。一种必须在Scrapy项目中运行(针对项目(Project-specific)的命令),另外一种则不需要(全局命令)。全局命令在项目中运行时的表现可能会与在非项目中运行有些许差别(因为可能会使用项目的设定)
全局命令有:

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

项目命令有:

  • crawl
  • check
  • list
  • edit
  • parse
  • genspider
  • bench

startproject

语法: scrapy startproject <project_name>
在 project_name 文件夹下创建一个名为 project_name 的Scrapy项目

genspider

语法:scrapy genspider [-t template]
在当前项目中创建spider;这仅仅是创建spider的一种快捷方法,该方法可以使用提前定义好的模板来生成spider。也可以自己创建spider的源码文件;示例如下:

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

$ scrapy genspider -d basic
import scrapy

class $classname(scrapy.Spider):
    name = "$name"
    allowed_domains = ["$domain"]
    start_urls = (
        'http://www.$domain/',
        )

    def parse(self, response):
        pass

$ scrapy genspider -t basic example example.com
Created spider 'example' using template 'basic' in module:
  mybot.spiders.example

crawl

语法: scrapy crawl
使用spider进行爬取(已经创建好的spider)

check

语法: scrapy check [-l]
运行contract检查,用来做单元测试的,用法可以看看test值Scrapy Contract

list

语法: scrapy list
列出当前项目中所有可用的spider。每行输出一个spider

edit

语法: scrapy edit
使用 EDITOR 中设定的编辑器编辑给定的spider;该命令仅仅是提供一个快捷方式。开发者可以自由选择其他工具或者IDE来编写调试spider

fetch

语法: scrapy fetch
使用Scrapy下载器(downloader)下载给定的URL,并将获取到的内容送到标准输出。该命令以spider下载页面的方式获取页面;例如,如果spider有 USER_AGENT 属性修改了 User Agent,该命令将会使用该属性。因此可以使用该命令来查看spider如何获取某个特定页面。
该命令如果非项目中运行则会使用默认Scrapy downloader设定

view

语法: scrapy view
在浏览器中打开给定的URL,并以Scrapy spider获取到的形式展现。 有些时候spider获取到的页面和普通用户看到的并不相同。 因此该命令可以用来检查spider所获取到的页面

shell

语法: scrapy shell [url]
以给定的URL(如果给出)或者空(没有给出URL)启动Scrapy shell

parse

语法: scrapy parse [options]
获取给定的URL并使用相应的spider分析处理。如果提供 --callback 选项,则使用spider的该方法处理,否则使用 parse
支持的选项有:

  • --spider=SPIDER: 跳过自动检测spider并强制使用特定的spider
  • --a NAME=VALUE: 设置spider的参数(可能被重复)
  • --callback or -c: spider中用于解析返回(response)的回调函数
  • --pipelines: 在pipeline中处理item
  • --rules or -r: 使用 CrawlSpider 规则来发现用来解析返回(response)的回调函数
  • --noitems: 不显示爬取到的item
  • --nolinks: 不显示提取到的链接
  • --nocolour: 避免使用pygments对输出着色
  • --depth or -d: 指定跟进链接请求的层次数(默认: 1)
  • --verbose or -v: 显示每个请求的详细信息

settings

语法: scrapy settings [options]
获取Scrapy的设定;在项目中运行时,该命令将会输出项目的设定值,否则输出Scrapy默认设定;一般使用--get参数加上需要获取的字段名来获取设定值

runspider

语法: scrapy runspider <spider_file.py>
在未创建项目的情况下,运行一个编写在Python文件中的spider

version

语法: scrapy version [-v]
输出Scrapy版本。配合 -v 运行时,该命令同时输出Python, Twisted以及平台的信息

bench

语法: scrapy bench
运行benchmark测试

⚠️ **GitHub.com Fallback** ⚠️