Command line tools:命令行工具
Scrapy是通过 scrapy
命令行工具进行控制的。 这里我们称之为 “Scrapy tool” 以用来和子命令进行区分。 对于子命令,我们称为 “command” 或者 “Scrapy commands”。
Scrapy 项目结构:
scrapy.cfg myproject/ __init__.py items.py pipelines.py settings.py spiders/ __init__.py spider1.py spider2.py ...
scrapy.cfg 存放了了项目的名称:
[settings]
default = quotetoturials.settings
items.py 存放抓取的数据,它就像一个容器,装东西用的。主要是Field(),这个Field()就是一个dict,没有别的意义
pipelines.py 它一个管道,用来传输数据和筛选数据
setting.py 定义项目的全局配置
spiders.py 逻辑爬虫,代码主要写这里面
middlerwears.py 中间件
1.0 scrapy 无参数启动
或者有参数:
Scrapy X.Y - project: myproject
创建项目:
crapy startproject myproject
然后cd到目录下:
创建一个新的sipders:
scrapy genspider mydomain mydomain.com
2.0 查看帮助:
scrapy -h
scrapy <command> -h
Scrapy提供了两种类型的命令。一种必须在Scrapy项目中运行(针对项目(Project-specific)的命令),另外一种则不需要(全局命令)。全局命令在项目中运行时的表现可能会与在非项目中运行有些许差别(因为可能会使用项目的设定)。
1.0 全局命令:
startproject
settings
runspider
shell
fetch
view
version
2.0 项目(Project-only)命令:
crawl
check
list
edit
parse
genspider
bench
1.0.1 startproject
语法:
scrapy startproject <project name>
1.0.2 gensipders
语法:
scrapy gensipders <-t template> mydomain www.mydomain
他有很spiders 的模板。
scrapy genspider -l
Available templates:
basic
crawl
csvfeed
xmlfeed
1.0.3 crawl
语法:
scrapy crawl <spider>
使用spider进行爬取。
1.0.4 check
语法:
scrapy check [-l] <spider>
运行contract检查。
1.0.5 list
语法:
scrapy list
列出当前项目中所有可用的spider。每行输出一个spider。
$ scrapy list
spider1
spider2
1.0.5 edit
语法:
scrapy edit <spider>
1.0.6 fetch
语法:
scrapy fetch <url>
--nolog 不会出现日志
使用Scrapy下载器(downloader)下载给定的URL,并将获取到的内容送到标准输出。
该命令以spider下载页面的方式获取页面。例如,如果spider有 USER_AGENT
属性修改了 User Agent,该命令将会使用该属性。
因此,您可以使用该命令来查看spider如何获取某个特定页面。
该命令如果非项目中运行则会使用默认Scrapy downloader设定。
1.0.7 view
语法:
scrapy view <url>
在浏览器中打开给定的URL,并以Scrapy spider获取到的形式展现。 有些时候spider获取到的页面和普通用户看到的并不相同。 因此该命令可以用来检查spider所获取到的页面,并确认这是您所期望的。
$ scrapy view http://www.example.com/some/page.html
[ ... browser starts ... ]
1.0.7 shell
语法:
scrapy shell [url]
以给定的URL(如果给出)或者空(没有给出URL)启动Scrapy shell
1.0.8 parse
语法:
scrapy parse <url> [options]
获取给定的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
: 显示每个请求的详细信息
$ 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 ----------------------------------------------------------------- []
1.0.9 settings
语法:
scrapy settings [options]
在项目中运行时,该命令将会输出项目的设定值,否则输出Scrapy默认设定
$ scrapy settings --get BOT_NAME scrapybot $ scrapy settings --get DOWNLOAD_DELAY 0
1.0.9 runspider
语法:
scrapy runspider <spider_file.py>
在未创建项目的情况下,运行一个编写在Python文件中的spider
1.0.10 version
语法:
scrapy version [-v]
1.0.11 bench
新功能
语法:
scrapy bench
测试代码用的。Benchmarking
1.0.11 COMMANDS_MODULE
新功能
用于查找添加自定义Scrapy命令的模块。