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

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

创建项目

Scrapy startproject myproject

接下来,进入到项目目录中:

cd myproject

然后就可以使用 scrapy 命令来管理和控制项目。

控制项目

创建一个新的 spider:

scrapy genspider mydomain mydomain.com

获取命令帮助

Scrapy <command> -h

获取所有命令

scrapy -h

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

全局命令:

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

项目(Project-only)命令:

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

startproject

语法:scrapy startproject <project_name>

genspider

语法:scrapy genspider [-t template] <name> <domain>

在当前项目中创建 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] <spider>

进行 contract 检查

$ scrapy check -l
first_spider
* parse
* parse_item
second_spider
* parse
* parse_item $ scrapy check
[FAILED] first_spider:parse_item
>>> 'RetailPricex' field is missing [FAILED] first_spider:parse
>>> Returned 92 requests, expected 0..4

list

语法:scrapy list

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

$ scrapy list
spider1
spider2

edit

语法:scrapy edit <spider>

使用 EDITOR 中设定的编辑器编辑给定的 spider

该命令仅仅是提供一个快捷方式。开发者可以自由选择其他工具或者 IDE 来编写调试 spider。

$ scrapy edit spider1

fetch

语法:scrapy fetch <url>

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

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

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

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

$ scrapy fetch --nolog http://www.example.com/some/page.html
[ ... html content here ... ] $ scrapy fetch --nolog --headers http://www.example.com/
{'Accept-Ranges': ['bytes'],
'Age': ['1263 '],
'Connection': ['close '],
'Content-Length': [''],
'Content-Type': ['text/html; charset=UTF-8'],
'Date': ['Wed, 18 Aug 2010 23:59:46 GMT'],
'Etag': ['"573c1-254-48c9c87349680"'],
'Last-Modified': ['Fri, 30 Jul 2010 15:30:18 GMT'],
'Server': ['Apache/2.2.3 (CentOS)']}

view

语法:scrapy view <url>

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

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

shell

语法:scrapy shell [url]

以给定的 URL(如果给出)或者空(没有给出 URL)启动 Scrapy shell。查看 Scrapy 终端(Scrapy shell) 获取更多信息。

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

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 -----------------------------------------------------------------
[]

settings

语法:scrapy settings [option]

获取 Scrapy 的设定

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

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

runspider

语法:scrapy runspider <spider_file.py>

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

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

version

语法:scrapy version [-v]

输出 Scrapy 版本。配合 -v 运行时,该命令同时输出 Python,Twisted 以及平台的信息,方便 bug 提交。

deploy

语法:scrapy deploy [ <target:project> | -l <target> | -L ]

将项目部署到 Scrapyd 服务

bench

语法:scrapy bench

运行 benchmark 测试。

自定义项目命令

可以通过 COMMANDS_MODULE 来添加自己的项目命令

COMMANDS_MODULE

Default: '' (empty string)

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

例子:

COMMANDS_MODULE = 'mybot.commands'

爬虫:Scrapy2 - 命令行工具的更多相关文章

  1. 从零开始打造个人专属命令行工具集——yargs完全指南

    前言 使用命令行程序对程序员来说很常见,就算是前端工程师或者开发gui的,也需要使用命令行来编译程序或者打包程序 熟练使用命令行工具能极大的提高开发效率,linux自带的命令行工具都非常的有用,但是这 ...

  2. Scrapy 1.4 文档 05 命令行工具

    在系统命令行中,使用 scrapy 命令可以创建工程或启动爬虫,它控制着 Scrapy 的行为,我们称之为 Scrapy 命令行工具(command-line tool)或 Scrapy 工具(Scr ...

  3. Scrapy学习篇(二)之常用命令行工具

    简介 Scrapy是通过Scrapy命令行工具进行控制的,包括创建新的项目,爬虫的启动,相关的设置,Scrapy提供了两种内置的命令,分别是全局命令和项目命令,顾名思义,全局命令就是在任意位置都可以执 ...

  4. Scrapy命令行工具简介

    Windows 10家庭中文版,Python 3.6.4,virtualenv 16.0.0,Scrapy 1.5.0, 在最初使用Scrapy时,使用编辑器或IDE手动编写模块来创建爬虫(Spide ...

  5. 使用Scrapy命令行工具【导出JSON文件】时编码设置

    Windows 10家庭中文版,Python 3.6.4,virtualenv 16.0.0,Scrapy 1.5.0, 使用scrapy命令行工具建立了爬虫项目(startproject),并使用s ...

  6. windows下的命令行工具babun

    什么是babun babun是windows上的一个第三方shell,在这个shell上面你可以使用几乎所有linux,unix上面的命令,他几乎可以取代windows的shell.用官方的题目说就是 ...

  7. 『.NET Core CLI工具文档』(一).NET Core 命令行工具(CLI)

    说明:本文是个人翻译文章,由于个人水平有限,有不对的地方请大家帮忙更正. 原文:.NET Core Command Line Tools 翻译:.NET Core命令行工具 什么是 .NET Core ...

  8. 命令行工具aspnet_regiis.exe实现加密和解密web.config

    命令行工具aspnet_regiis.exe,是一个类似于DOS的命令工具,称之为命令解释器.使用命令行工具加密和解密web.config文件中的数据库连接字符串时,只需要简单的语法命令即可. 加密语 ...

  9. nodejs 编写(添加时间戳)命令行工具 timestamp

    Nodejs除了编写服务器端程序还可以编写命令行工具,如gulp.js就是Nodejs编写的. 接下来我们来实现一个添加时间戳的命令: $ timestamp action https://www.n ...

随机推荐

  1. 可以让表格变为拖动边界调整列宽度的JS办法

    需要引入文件: jquery.resizableColumns.min.js 和 jquery.resizableColumns.css 代码如下: $(".tableclass" ...

  2. 使ListView控件中的选择项高亮显示

    实现效果: 知识运用: ListView控件的SelectedItems属性 //获取在ListView控件中被选中数据项的集合 public ListView.SelectedListViewIte ...

  3. 3205: 数组做函数参数--数组元素求和1--C语言

    3205: 数组做函数参数--数组元素求和1--C语言 时间限制: 1 Sec  内存限制: 128 MB提交: 178  解决: 139[提交][状态][讨论版][命题人:smallgyy] 题目描 ...

  4. 题解 P1319 【压缩技术】

    这题是红题,我都觉得我的题解过不了 这道题输入不像别的题,给一个参数 n ,然后输入 n 的倍数个数据,它是给一个 n , 再输入一堆数.看题目,n × n ? 是不是就说明了给出的数和一定,都是 n ...

  5. RxJava2 方法总结

    RxJava2 方法总结 看了许多讲解RxJava的文章,有些文章讲解的内容是基于第一个版本的,有些文章的讲解是通过比较常用的一些API和基础的概念进行讲解的. 但是每次看到RxJava的类中的几十个 ...

  6. 10个HTML5 实战教程 提升你的综合开发能力

    HTML5 作为下一代网站开发技术,无论你是一个 Web 开发人员或者想探索新的平台的游戏开发者,都值得去研究.借助尖端功能,技术和 API,HTML5 允许你创建响应性.创新性.互动性以及令人惊叹的 ...

  7. ASP.NET Core模块化前后端分离快速开发框架介绍之2、快速创建一个业务模块

    源码地址 GitHub:https://github.com/iamoldli/NetModular 演示地址 地址:https://nm.iamoldli.com 账户:admin 密码:admin ...

  8. Net core 轮子

    .net core 使用的人渐渐多了起来,轮子也渐渐多了起来,为了避免重复造轮子,以下列举了一些造好的轮子 1. IP 请求频率限制 git: https://github.com/stefanpro ...

  9. vue.js devtools安装

    在调试的时候chrome会提示安装vue devtools,我以为是要在chrome的程序商店直接安装,但是国内对谷歌的和谐,无法访问谷歌商店内容 官方有源代码,可以下载下来自行编译安装 官方地址:h ...

  10. java util - 中文、繁体转成拼音工具pinyin4j

    需要 pinyin4j-2.5.0.jar 包 代码例子 package cn.java.pinyin4j; import net.sourceforge.pinyin4j.PinyinHelper; ...