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 startproject weather
创建了项目之后,可以通过scrapy工具来对其进行控制和管理,有些scrapy命令要求必须在项目中运行,比如crawl,可以通过命令行查看,你可以在项目之外和项目中分别输入scrapy查看有什么不同的。
你可以使用scrapy
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]
在当前项目中创建spider,这仅仅是创建spider的一种快捷方法,该方法可以使用提前定义好的模板来生成spider,也可以子集创建spider的源码文件。
deng@dengjingdong:~$ cd weather
deng@dengjingdong:~/weather$ scrapy genspider -l
Available templates:
basic
crawl
csvfeed
xmlfeed
deng@dengjingdong:~/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
deng@dengjingdong:~/weather$ scrapy genspider -t basic spider1 www.jd.com
Created spider 'spider1' using template 'basic' in module:
weather.spiders.spider1
crawl
scrapy crawl
使用spider进行抓取
scrapy crawl weather
check
scrapy check [-l]
运行contract检查
list
scrapy list
列出当前项目中所有可用的spider,每一行输出一个spider。
deng@dengjingdong:~/weather$ scrapy list
myweather
spider1
weather_spider1
weather_spider2
edit
scrapy edit
使用EDITOR中设定的编辑器编辑给定的spider,在我电脑里运行的是vim,我是ubuntu。
fetch
scrapy fetch
使用scrapy下载器下载给定的url,并将获取的内容送到标准输出。它是一个全局命令,在项目之外就可以运行,主要是提取网页的内容到标准输出中。
scrapy fetch --nolog --headers http://www.example.com/
scrapy view
在浏览器中打开给定的url,并以scrapy spider获取道德形式展现。有些时候spider获取到的页面和普通用户看到的并不相同。因此该命令可以用来检查spider所获取的页面,并确认这是你所期望的。
scrapy view http://www.jd.com/
scrapy shell [url]
以给定的URL或者空启动scrapy shell,进入shell之后你会看到一排命令行,可以进行你想要的操作。
scrapy shell http://www.jd.com/
parse
scrapy parse
获取给定的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
在未创建项目的情况下,运行一个编写在python文件中的spider。
scrapy runspider myspider.py
version
scrapy version [-v]
输出scrapy版本。配合-v运行时,该命令同时输出python。twisted以及平台的信息,方便bug提交。
deploy
scrapy deploy [
将项目部署到scrapyd服务
bench
scrapy bench
运行benchmark测试
自定义项目命令,你可以通过COMMAND——MODULE来添加自己的项目命令。