返回介绍

12.6 命令行工具

发布于 2024-01-26 22:39:51 字数 3722 浏览 0 评论 0 收藏 0

既然用到了scrapy shell,本节就讲解一下Scrapy的命令行功能。Scrapy提供了两种类型的命令。一种必须在Scrapy项目中运行,是针对项目的命令;另外一种则不需要,属于全局命令。全局命令在项目中运行时的表现可能会与在非项目中的运行表现有些许差别,因为可能会使用项目的设定。

全局命令如下:

·startproject

·settings

·runspider

·shell

·fetch

·view

·version

·bench

startproject命令,语法:scrapy startproject<project_name>。用于在project_name文件夹下创建一个名为project_name的Scrapy项目。示例如下:

  $ scrapy startproject myproject

settings命令,语法:scrapy settings[options]。在项目中运行时,该命令将会输出项目的设定值,否则输出Scrapy默认设定。示例如下:

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

runspider命令,语法:scrapy runspider<spider_file.py>。在未创建项目的情况下,运行一个编写好的spider模块。示例如下:

  $ scrapy runspider cnblogs_spider.py

shell命令,语法:scrapy shell[url]。用来启动Scrapy shell,url为可选。示例如下:

  $ scrapy shell "http://www.cnblogs.com/qiyeboy/default.htmlpage=1"

fetch命令,语法:scrapy fetch<url>。使用Scrapy下载器(downloader)下载给定的URL,并将获取到的内容送到标准输出。该命令以spider下载页面的方式获取页面,如果是在项目中运行,fetch将会使用项目中spider的属性访问。如果在非项目中运行,则会使用默认Scrapy downloader设定。示例如下:

  $ scrapy fetch --nolog "http://www.cnblogs.com/qiyeboy/default.htmlpage=1"
  $ scrapy fetch --nolog --headers "http://www.cnblogs.com/qiyeboy/default.htmlpage=1"

view命令,语法:scrapy view<url>。在浏览器中打开给定的URL,并以Scrapy spider获取到的形式展现,和之前讲的view(response)效果一样。示例如下:

  $ scrapy view "http://www.cnblogs.com/qiyeboy/default.htmlpage=1"

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

bench命令,语法:scrapy bench。用于运行benchmark测试,测试Scrapy在硬件上的效率。

项目命令如下:

·crawl

·check

·list

·edit

·parse

·genspider

·deploy

crawl命令,语法:scrapy crawl<spider>。用来使用spider进行爬取,示例如下:

  $ scrapy crawl cnblogs

check命令,语法:scrapy check[-l]<spider>。运行contract检查,示例如下:

  $ scrapy check -l

list命令,语法:scrapy list。列出当前项目中所有可用的spider,每行输出一个spider。示例如下:

  $ scrapy list

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

  $ scrapy edit cnblogs

parse命令,语法:scrapy parse<url>[options]。获取给定的URL并使用相应的spider分析处理。如果提供--callback选项,则使用spider中的解析方法进行处理。支持的选项:

·--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.cnblogs.com/qiyeboy/default.htmlpage=1" -c parse

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

deploy命令,语法:scrapy deploy[<target:project>|-l<target>|-L]。将项目部署到Scrapyd服务,之后会用到。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文