【Rollo的Python之路】Scrapy 命令行学习

 Command line tools:命令行工具

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

Scrapy 项目结构:

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

scrapy.cfg 存放了了项目的名称:

[settings]
default = quotetoturials.settings

items.py 存放抓取的数据,它就像一个容器,装东西用的。主要是Field(),这个Field()就是一个dict,没有别的意义

pipelines.py 它一个管道,用来传输数据和筛选数据

setting.py 定义项目的全局配置

spiders.py 逻辑爬虫,代码主要写这里面

middlerwears.py 中间件

1.0 scrapy 无参数启动

或者有参数:

Scrapy X.Y - project: myproject

创建项目:
crapy startproject myproject

然后cd到目录下:

创建一个新的sipders:

scrapy genspider mydomain mydomain.com

2.0 查看帮助:

scrapy -h
scrapy <command> -h

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

1.0 全局命令:

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

2.0 项目(Project-only)命令:

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

1.0.1 startproject

语法:

scrapy startproject <project name>

1.0.2 gensipders

语法:

scrapy gensipders <-t template> mydomain www.mydomain

他有很spiders 的模板。

scrapy genspider -l
Available templates:
  basic
  crawl
  csvfeed
  xmlfeed

1.0.3 crawl

语法:

scrapy crawl <spider>

使用spider进行爬取。

1.0.4 check

语法:

scrapy check [-l] <spider>

运行contract检查。

1.0.5 list

语法:

scrapy list

列出当前项目中所有可用的spider。每行输出一个spider。

$ scrapy list
spider1
spider2

1.0.5 edit

语法:

scrapy edit <spider>

1.0.6 fetch

语法:

scrapy fetch <url>

--nolog 不会出现日志

使用Scrapy下载器(downloader)下载给定的URL,并将获取到的内容送到标准输出。

该命令以spider下载页面的方式获取页面。例如,如果spider有 USER_AGENT 属性修改了 User Agent,该命令将会使用该属性。

因此,您可以使用该命令来查看spider如何获取某个特定页面。

该命令如果非项目中运行则会使用默认Scrapy downloader设定。

1.0.7 view

语法:

scrapy view <url>

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

$ scrapy view http://www.example.com/some/page.html
[ ... browser starts ... ]

1.0.7 shell

语法:

scrapy shell [url]

以给定的URL(如果给出)或者空(没有给出URL)启动Scrapy shell

1.0.8 parse

语法:

scrapy parse <url> [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: 显示每个请求的详细信息
$ scrapy parse http://www.example.com/ -c parse_item
[ ... scrapy log lines crawling example.com spider ... ]

>>> STATUS DEPTH LEVEL 1 <<<
# Scraped Items  ------------------------------------------------------------
[{'name': u'Example item',
 'category': u'Furniture',
 'length': u'12 cm'}]

# Requests  -----------------------------------------------------------------
[]

1.0.9 settings

语法:

scrapy settings [options]

在项目中运行时,该命令将会输出项目的设定值,否则输出Scrapy默认设定

$ scrapy settings --get BOT_NAME
scrapybot
$ scrapy settings --get DOWNLOAD_DELAY
0

1.0.9 runspider

语法:

scrapy runspider <spider_file.py>

在未创建项目的情况下,运行一个编写在Python文件中的spider

1.0.10 version

语法:

scrapy version [-v]

1.0.11 bench

新功能

语法:

scrapy bench

测试代码用的。Benchmarking

1.0.11 COMMANDS_MODULE

新功能

用于查找添加自定义Scrapy命令的模块。

原文地址:https://www.cnblogs.com/rollost/p/10912904.html