详解Scrapy的命令行工具
接触过Scrapy的人都知道,我们很多操作是需要借助命令行来执行的,比如创建项目,运行爬虫等。所以了解和掌握这些命令对于scrapy的学习是很有帮助的!
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目录下,如果目录不存在,那么目录就会变成项目名。
使用案例:
$ scrapy startproject myproject
2. genspider
语法
scrapy genspider [-t template] <name> <domain>
含义:新建一个爬虫在当前文件夹或者在当前项目的爬虫文件夹中,如果是在一个项目当中,这个<name>参数将被当成爬虫的名字,然而<domain>将会被用来创建爬虫里面的 allowed_domains 和start_urls的属性值
使用案例:
$ 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>
含义:运行爬虫
使用案例:
$ scrapy crawl myspider
4. check
语法
scrapy check [-l] <spider>
含义:运行contract检查,检查你项目中的错误之处。
使用案例:
$ scrapy check -lfirst_spider * parse * parse_itemsecond_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
含义:列举出当前项目的爬虫
使用案例:
$ scrapy listspider1spider2
6. edit
语法:scrapy edit <spider>
含义:编辑爬虫代码,实际上就是vim模式,但是这种方式并不怎么好用,还不如用IDE去写爬虫。
使用案例:
$ scrapy edit spider1
7. fetch
语法:scrapy fetch <url>
含义:使用Scrapy下载器下载指定的URL,并将获得的内容输出,通俗的来说就是打印出网站的HTML源码。
使用实例:
$ scrapy fetch --nolog http://www.example.com/some/page.html[ ... html content here ... ]
8.view
语法:scrapy view <url>
含义:在你的默认浏览器中打开给定的URL,并以Scrapy spider获取到的形式展现。 有些时候spider获取到的页面和普通用户看到的并不相同,一些动态加载的内容是看不到的, 因此该命令可以用来检查spider所获取到的页面。
使用案例:
$ scrapy view http://www.example.com/some/page.html[ ... browser starts ... ]
9.shell
语法:scrapy shell [url]
含义:启动Scrapy Shell 来打开url,可以进行一些测试
使用案例:
# 直接请求 scrapy shell http://www.baidu.com[ ... scrapy shell starts ... ] # 加headers scrapy shell headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36"} req = scrapy.Request(url="https://bbs.pinggu.org/thread-7866291-1-1.html", headers=headers) fetch(req)
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
: 显示每个深度级别的信息
使用案例:
$ 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里面的设置属性
使用案例:
$ scrapy settings --get BOT_NAMEscrapybot$ scrapy settings --get DOWNLOAD_DELAY0
12.runspider
语法:scrapy runspider <spider_file.py>
含义:运行一个含有爬虫的python文件,不需要是一个scrapy项目
使用案例:
$ scrapy runspider myspider.py[ ... spider starts crawling ... ]
13.version
语法:scrapy version [-v]
含义:查看Scrapy版本
使用案例:
scrapy versionScrapy 1.6.0
14.bench
语法:scrapy bench
含义:测试电脑当前爬取速度性能