scrapy是通过命令行进行控制的,你可以在命令行中输入一个scrapy,会出现一拍命令。
你也可以通过tree来查看scrapy的目录结构,scrapy.cfg存放的目录被认为是项目的根目录,该文件中包含python模块名的字段定义了项目的设置。下面的代码是我一个爬取天气的爬虫中的.cfg文件。
# Automatically created by: scrapy startproject # # For more information about the [deploy] section see: # http://doc.scrapy.org/en/latest/topics/scrapyd.html [settings] default = weather.settings [deploy] #url = http://localhost:6800/ project = weather
一般来说使用scrapy工具的第一件事就是创建您的scrapy项目
scrapy startproject weather
创建了项目之后,可以通过scrapy工具来对其进行控制和管理,有些scrapy命令要求必须在项目中运行,比如crawl,可以通过命令行查看,你可以在项目之外和项目中分别输入scrapy查看有什么不同的。
你可以使用scrapy <command> -h查看命令的作用,也可以通过scrapy -h查看所有可用的命令。
scrapy提供两种类型的命令,一种必须在scrapy项目中运行,另一种则为全局命令。
全局命令 startproject settings runspider shell fetch view version
项目命令 crawl check list edit parse genspider deploy bench
startproject
scrapy startproject project_name
在文件夹下创建一个名为project_name的scrapy项目
scrapy startproject myproject
genspider
scrapy genspider [-t template] <name> <domain>
在当前项目中创建spider,这仅仅是创建spider的一种快捷方法,该方法可以使用提前定义好的模板来生成spider,也可以子集创建spider的源码文件。
[email protected]:~$ cd weather [email protected]:~/weather$ scrapy genspider -l Available templates: basic crawl csvfeed xmlfeed [email protected]:~/weather$ scrapy genspider -d basic # -*- coding: utf-8 -*- import scrapy class $classname(scrapy.Spider): name = "$name" allowed_domains = ["$domain"] start_urls = ( 'http://www.$domain/', ) def parse(self, response): pass [email protected]:~/weather$ scrapy genspider -t basic spider1 www.jd.com Created spider 'spider1' using template 'basic' in module: weather.spiders.spider1
crawl
scrapy crawl <spider>
使用spider进行抓取
scrapy crawl weather
check
scrapy check [-l] <spider>
运行contract检查
list
scrapy list
列出当前项目中所有可用的spider,每一行输出一个spider。
[email protected]:~/weather$ scrapy list myweather spider1 weather_spider1 weather_spider2
edit
scrapy edit <spider>
使用EDITOR中设定的编辑器编辑给定的spider,在我电脑里运行的是vim,我是ubuntu。
fetch
scrapy fetch <url>
使用scrapy下载器下载给定的url,并将获取的内容送到标准输出。它是一个全局命令,在项目之外就可以运行,主要是提取网页的内容到标准输出中。
scrapy fetch --nolog --headers http://www.example.com/
view
scrapy view <url>
在浏览器中打开给定的url,并以scrapy spider获取道德形式展现。有些时候spider获取到的页面和普通用户看到的并不相同。因此该命令可以用来检查spider所获取的页面,并确认这是你所期望的。
scrapy view http://www.jd.com/
shell
scrapy shell [url]
以给定的URL或者空启动scrapy shell,进入shell之后你会看到一排命令行,可以进行你想要的操作。
scrapy shell http://www.jd.com/
parse
scrapy parse <url> [option]
获取给定的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: 显示每个请求的详细信息
settings
scrapy settings [options]
获取scrapy的设定,在项目中运行是,该命令将会输出项目的设定值,否则输出scrapy默认设定。
scrapy settings --get BOT_NAME
scrapy settings --get DOWN_OAD_DELAY
runspider
scrapy runspider <spider_file.py>
在未创建项目的情况下,运行一个编写在python文件中的spider。
scrapy runspider myspider.py
version
scrapy version [-v]
输出scrapy版本。配合-v运行时,该命令同时输出python。twisted以及平台的信息,方便bug提交。
deploy
scrapy deploy [<target:project> | -l <target> | -l]
将项目部署到scrapyd服务
bench
scrapy bench
运行benchmark测试
自定义项目命令,你可以通过COMMAND——MODULE来添加自己的项目命令。