专栏首页SeanCheney的专栏Scrapy1.4最新官方文档总结 3 命令行工具配置设置使用 scrapy 工具创建项目管理项目Scrapy 的可用命令parse

Scrapy1.4最新官方文档总结 3 命令行工具配置设置使用 scrapy 工具创建项目管理项目Scrapy 的可用命令parse

这是官方文档的命令行工具https://docs.scrapy.org/en/latest/topics/c

配置设置

Scrapy 默认在 scrapy.cfg 文件中查找配置参数:

  1. 系统范围:/etc/scrapy.cfg 或 c:\scrapy\scrapy.cfg
  2. 用户范围:~/.config/scrapy.cfg ($XDG_CONFIG_HOME) 和 ~/.scrapy.cfg ($HOME)
  3. 项目内范围:scrapy.cfg

项目范围的设置将覆盖所有其他文件的设置,用户范围内定义的设置的覆盖系统范围内的设置。 Scrapy 也可以接受来自环境变量的配置。目前有:

使用 scrapy 工具

在没有参数的情况下直接运行 scrapy 命令将得到一些使用帮助和可用的命令,如下所示:

在之前tutorial下面运行,第一行将打印出当前项目的名称:

创建项目

scrapy startproject myproject [project_dir]

这将在 project_dir 目录下创建一个 Scrapy 项目。如果没有指定 project_dir,将会在与 myproject 同名的目录中创建项目(如果没有则创建它)。

进入新建项目的根目录:

cd project_dir

管理项目

新建爬虫:

scrapy genspider mydomain mydomain.com

Scrapy 的可用命令

查看某个命令的帮助:

scrapy <command> -h

查看所有可用的命令:

scrapy -h

命令分为两类,全局命令: startproject genspider settings runspider shell fetch view version

项目命令: crawl check list edit parse bench

startproject

scrapy startproject myproject

genspider

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

在当前文件夹或当前项目的 spiders 文件夹中新建一个爬虫。如果在项目中使用此命令。 <name> 参数为爬虫的名称,<domain> 用于生成 allowed_domains 和 start_urls spider 的属性。

示例(template:模板):

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

$ scrapy genspider example example.com
Created spider 'example' using template 'basic'

$ scrapy genspider -t crawl scrapyorg scrapy.org
Created spider 'scrapyorg' using template 'crawl'

crawl

语法:scrapy crawl <spider> 必须在项目内使用。 启动爬虫。

示例:

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

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 必须在项目内使用:是 列出项目中所有可用爬虫。

示例:

$ scrapy list
spider1
spider2

edit

语法:scrapy edit <spider> 必须在项目内使用:是 使用EDITOR环境变量或设置中定义的编辑器编辑爬虫。

该命令仅作为一种快捷方式提供,开发人员可以自由选择工具或IDE来编写和调试爬虫。

示例:

$ scrapy edit spider1

fetch

语法:scrapy fetch <url> 必须在项目内使用:否 使用 Scrapy 下载器下载给定的 URL,并将内容输出到标准输出流。

这个命令的有趣之处在于它会使用爬虫定义的方式下载页面。 例如,如果爬虫具有 USER_AGENT 属性覆盖了 User Agent,那么命令将使用爬虫里的属性。

所以这个命令可以用来查看爬虫如何获取某个页面。

在项目之外使用时只会使用默认的 Scrapy 下载器设置。

支持的选项:

  • --spider = SPIDER:强制使用给定的爬虫
  • --headers:打印 HTTP 响应头
  • --no-redirect:禁用 HTTP 3xx 重定向(默认启用)

示例:

$ 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': ['596'],
 '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> 必须在项目内使用:否 以 Scrapy 爬虫所“看到”的样子在浏览器中打开给定的URL。用来查看爬虫所“看到”的样子是否是你所期望的,因为两者有可能不同。

支持的选项:

--spider = SPIDER:强制使用给定的爬虫 --no-redirect:禁用 HTTP 3xx 重定向(默认启用) 示例:

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

shell

语法:scrapy shell [url] 必须在项目内使用:否 以给定的 URL(如果给定)启动 Scrapy shell。支持 UNIX 风格的本地文件路径,包括相对路径(./ 或 ../)和绝对路径。请参阅 Scrapy shell 了解更多信息。

支持的选项:

--spider = SPIDER:强制使用给定的爬虫 -c code:在 shell 中执行代码,打印结果并退出 --no-redirect:禁用 HTTP 3xx 重定向(默认启用); 这只会影响您在命令行参数中给定的 URL;,一旦你进入到 shell 中,fetch(url) 将默认启用 HTTP 重定向。 示例:

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

$ scrapy shell --nolog http://www.example.com/ -c '(response.status, response.url)'
(200, 'http://www.example.com/')

# 默认启用重定向
$ scrapy shell --nolog http://httpbin.org/redirect-to?url=http%3A%2F%2Fexample.com%2F -c '(response.status, response.url)'
(200, 'http://example.com/')

# 你可以通过 --no-redirect 禁用重定向
# (只作用于命令行参数中的 URL)
$ scrapy shell --no-redirect --nolog http://httpbin.org/redirect-to?url=http%3A%2F%2Fexample.com%2F -c '(response.status, response.url)'
(302, 'http://httpbin.org/redirect-to?url=http%3A%2F%2Fexample.com%2F')

parse

语法:scrapy parse <url> [options] 必须在项目内使用:是 获取给定的 URL 并使用爬虫处理它的方式解析它,使用 --callback 选项传递解析方法,默认使用 parse 方法。

支持的选项:

  • --spider = SPIDER:强制使用给定的爬虫
  • --a NAME = VALUE:设置爬虫参数(可能会重复)
  • --callback 或 -c:解析响应对象的回调方法
  • --piplines:通过管道处理项
  • --rules 或 -r:使用 CrawlSpider 规则查找用于解析响应对象的回调方法
  • --noitems:不显示抓取到的项
  • --nolinks:不显示提取的链接
  • --nocolour:避免使用pygments对输出着色
  • --depth 或 -d:递归爬取的深度(默认值:1)
  • --verbose 或 -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 [options] 必须在项目内使用:否 获取 Scrapy 设置。

如果在项目中使用它将显示项目的设置值,否则将显示 Scrapy 默认的设置。

示例:

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

runspider

语法:scrapy runspider <spider_file.py> 必须在项目内使用:否 运行一个独立的爬虫 Python 文件,无需创建一个项目。

示例:

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

version

语法:scrapy version [-v] 必须在项目内使用:否

打印 Scrapy 版本。使用 -v 时还会打印出 Python,Twisted 和 Platform 的信息,这对错误报告很有用。

bench

语法:scrapy bench 必须在项目内使用:否

运行 benchmark 测试。

自定义命令

您还可以使用 COMMANDS_MODULE 设置添加自定义项目命令。有关如何实现命令的示例,请参阅 scrapy commands

COMMANDS_MODULE

默认值:''(空字符串) 用于查找自定义 Scrapy 命令的模块。用于为您的 Scrapy 项目添加自定义命令。 例:

COMMANDS_MODULE = 'mybot.commands'

通过 setup.py 的 entry points 注册命令

注意:这是一个实验性功能,请谨慎使用。

您还可以在 setup.py 文件的 entry point 中添加 scrapy.commands,从外部库添加 Scrapy 命令。

以下示例添加了 my_command 命令:

from setuptools import setup, find_packages

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 《Learning Scrapy》(中文版)第3章 爬虫基础

    本章非常重要,你可能需要读几遍,或是从中查找解决问题的方法。我们会从如何安装Scrapy讲起,然后在案例中讲解如何编写爬虫。开始之前,说几个注意事项。 因为我们...

    SeanCheney
  • 《Learning Scrapy》(中文版)第7章 配置和管理

    我们已经学过了用Scrapy写一个抓取网络信息的简单爬虫是多么容易。通过进行设置,Scrapy还有许多用途和功能。对于许多软件框架,用设置调节系统的运行,很让人...

    SeanCheney
  • 《Scikit-Learn与TensorFlow机器学习实用指南》

    看了《Scikit-Learn与TensorFlow机器学习实用指南》(Hands-On Machine Learning with Scikit-Learn ...

    SeanCheney
  • Learning Scrapy(一)

      学习爬虫有一段时间了,从Python的Urllib、Urlllib2到scrapy,当然,scrapy的性能且效率是最高的,自己之前也看过一些资料,在此学习...

    oYabea
  • Scrapy框架: 基本命令

    hankleo
  • Scrapy框架| 详解Scrapy的命令行工具

    今天开始JAP君正式来写Python的Scrapy爬虫框架的系列教程了,我大部分内容会根据Scrapy的官方文档来的,并且会写一些实战项目来练手。...

    Python进击者
  • 爬虫练习_使用scrapy爬取淘宝

    https://s.taobao.com/search?q=%E5%A5%B3%E8%A3%85+%E8%A3%99&imgfile=&js=1&stats_c...

    zx钟
  • Python scrapy框架的简单使用

    注意:Scrapy运行ImportError: No module named win32api错误。请安装:pip install pypiwin32

    Python知识大全
  • python面试被问到这个问题,答对了感觉中了1个亿

    爬了N个网站,仍然很困惑:随便想要点资料requests一爬就能抓下来,觉得自己挺厉害的,用scrapy爬整个全站却总是失败,找工作去面试经常会被问:你抓过哪些...

    叫我龙总
  • Python爬虫从入门到放弃(十三)之 Scrapy框架的命令行详解

    这篇文章主要是对的scrapy命令行使用的一个介绍 创建爬虫项目 scrapy startproject 项目名 例子如下: localhost:spider ...

    coders

扫码关注云+社区

领取腾讯云代金券