前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Scrapy框架| 详解Scrapy的命令行工具

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

作者头像
Python进击者
发布2019-06-21 14:57:36
7190
发布2019-06-21 14:57:36
举报
文章被收录于专栏:JAVAandPython君JAVAandPython君
1.写在前面的话

今天开始JAP君正式来写Python的Scrapy爬虫框架的系列教程了,我大部分内容会根据Scrapy的官方文档来的,并且会写一些实战项目来练手。之前的文章中我已经写过有scrapy的基本入门和两个小实战,大家可以去看看。

这篇文章我来写写Scrapy框架的命令行工具。接触过Scrapy的人都知道,我们很多操作是需要借助命令行来执行的,比如创建项目,运行爬虫等。所以了解和掌握这些命令对于scrapy的学习是很有帮助的!

2.Scrapy 命令

首先,在scrapy命令中分为两种,一个就是全局命令和项目命令,什么意思呢?简单粗暴的说就是有些命令你可以在你电脑任何地方用,有些命令只能在你自己的项目里面用。

下面给大家先看看所有的命令:

Global commands(全局命令):

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

Project-only commands(项目命令):

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

咱们一个一个来吧!

1. startproject

语法: scrapy startproject <project_name> [project_dir]

含义:创建一个新的Scrapy项目,名称为 project_name ,在project_dir目录下,如果目录不存在,那么目录就会变成项目名。

使用案例

代码语言:javascript
复制
$ scrapy startproject myproject

2. genspider

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

含义:新建一个爬虫在当前文件夹或者在当前项目的爬虫文件夹中,如果是在一个项目当中,这个<name>参数将被当成爬虫的名字,然而<domain>将会被用来创建爬虫里面的 allowed_domains 和start_urls的属性值

使用案例

代码语言:javascript
复制
$ scrapy genspider -l       
Available templates:
四种模板
  basic
  crawl
  csvfeed
  xmlfeed

$ scrapy genspider example example.com
创建example爬虫,并且默认使用basic模板

$ scrapy genspider -t crawl scrapyorg scrapy.org
创建scrapyorg模板,并且使用crawl模板

3.crawl

语法:scrapy crawl <spider>

含义:运行爬虫

使用案例

代码语言:javascript
复制
$ scrapy crawl myspider

4. check

语法:scrapy check [-l] <spider>

含义:运行contract检查,检查你项目中的错误之处。

使用案例

代码语言:javascript
复制
$ 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

5. list

语法:scrapy list

含义:列举出当前项目的爬虫

使用案例

代码语言:javascript
复制
$ scrapy list
spider1
spider2

6. edit

语法:scrapy edit <spider>

含义:编辑爬虫代码,实际上就是vim模式,但是这种方式并不怎么好用,还不如用IDE去写爬虫。

使用案例

代码语言:javascript
复制
$ scrapy edit spider1

7. fetch

语法:scrapy fetch <url>

含义:使用Scrapy下载器下载指定的URL,并将获得的内容输出,通俗的来说就是打印出网站的HTML源码。

使用实例:

代码语言:javascript
复制
$ scrapy fetch --nolog http://www.example.com/some/page.html
[ ... html content here ... ]

8.view

语法:scrapy view <url>

含义:在你的默认浏览器中打开给定的URL,并以Scrapy spider获取到的形式展现。 有些时候spider获取到的页面和普通用户看到的并不相同,一些动态加载的内容是看不到的, 因此该命令可以用来检查spider所获取到的页面。

使用案例

代码语言:javascript
复制
$ scrapy view http://www.example.com/some/page.html
[ ... browser starts ... ]

9.shell

语法:scrapy shell [url]

含义:启动Scrapy Shell 来打开url,可以进行一些测试

使用案例

代码语言:javascript
复制
$ scrapy shell http://www.baidu.com
[ ... scrapy shell starts ... ]

10. parse

语法:scrapy parse <url> [options]

含义:输出格式化内容

Supported options:

  • --spider=SPIDER: 自动检测爬虫、强制使用特定爬虫
  • --a NAME=VALUE: 设置爬虫的参数(可重复)
  • --callback or -c: 用作解析响应的回调的爬虫方法
  • --meta or -m: 传递给回调请求的附加请求元。必须是有效的JSON字符串。示例:–meta='“foo”:“bar”
  • --pipelines: 通过管道处理项目
  • --rules or -r: 使用crawlspider规则发现用于解析响应的回调(即spider方法)
  • --noitems: 不显示items
  • --nolinks: 不显示提取的链接
  • --nocolour: 避免使用Pygments对输出着色
  • --depth or -d: 递归执行请求的深度级别(默认值:1)
  • --verbose or -v: 显示每个深度级别的信息

使用案例

代码语言:javascript
复制
$ scrapy parse http://www.example.com/ -c parse_item
[ ... scrapy log lines crawling example.com spider ... ]

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

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

11.settings

语法:scrapy settings [options]

含义:拿到Scrapy里面的设置属性

使用案例

代码语言:javascript
复制
$ scrapy settings --get BOT_NAME
scrapybot
$ scrapy settings --get DOWNLOAD_DELAY
0

12.runspider

语法:scrapy runspider <spider_file.py>

含义:运行一个含有爬虫的python文件,不需要是一个scrapy项目

使用案例

代码语言:javascript
复制
$ scrapy runspider myspider.py
[ ... spider starts crawling ... ]

13.version

语法:scrapy version [-v]

含义:查看Scrapy版本

使用案例

代码语言:javascript
复制
scrapy version
Scrapy 1.6.0

14.bench

语法:scrapy bench

含义:测试电脑当前爬取速度性能

3.END

上面应该是全部的Scrapy 的命令语法了,我是根据官网上的来写得,所以应该是比较准确的,大家可以收藏这篇文章,不记得的时候可以拿出来看一看,反复记忆一下!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python进击者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档