1.创建项目
scrapy startproject myproject
该命令将会在 myproject 目录中创建一个 Scrapy 项目。接下来,进入到项目目录中:
cd myproject
这时候您就可以使用 scrapy 命令来管理和控制您的项目了。
2.控制项目
您可以在您的项目中使用 scrapy 工具来对其进行控制和管理。
比如,创建一个新的 spider:
scrapy genspider mydomain mydomain.com
这时,你就创建了一个命名为 mydomain 的 spider,其默认代码如下:
# -*- coding: utf-8 -*-
import scrapy
class MydomainSpider(scrapy.Spider):
name = "mydomain"
allowed_domains = ["mydomain.com"]
start_urls = (
'http://www.mydomain.com/',
)
def parse(self, response):
pass
3.Scrapy命令
** startproject **
- 语法: scrapy startproject <project_name>
- 是否需要项目: no
- 作用:在 project_name 文件夹下创建一个名为 project_name 的 Scrapy 项目
** genspider **
- 语法: scrapy genspider [-t template] <name> <domain>
- 是否需要项目: yes
- 作用:在当前项目中创建 spider
** crawl **
- 语法: scrapy crawl <spider>
- 是否需要项目: yes
- 作用:使用 spider 进行爬取。
** check **
- 语法: scrapy check [-l] <spider>
- 是否需要项目: yes
- 作用:运行 contract 检查
** list **
- 语法: scrapy list
- 是否需要项目: yes
- 作用:列出当前项目中所有可用的 spider
edit
- 语法: scrapy edit <spider>
- 是否需要项目: yes
- 使用 EDITOR
中设定的编辑器编辑给定的spider。
该命令仅仅是提供一个快捷方式。开发者可以自由选择其他工具或者IDE来编写调试spider。
fetch
- 语法: scrapy fetch <url>
- 是否需要项目: no
- 作用:使用Scrapy下载器(downloader)下载给定的URL,并将获取到的内容送到标准输出。
该命令以spider下载页面的方式获取页面。例如,如果spider有 USER_AGENT 属性修改了 User Agent,该命令将会使用该属性。因此,您可以使用该命令来查看spider如何获取某个特定页面。该命令如果非项目中运行则会使用默认Scrapy downloader设定。
例子:
$ scrapy fetch --nolog http://www.example.com/some/page.html
[ ... html content here ... ]
view
- 语法: scrapy view <url>
- 是否需要项目: no
- 作用:在浏览器中打开给定的URL,并以Scrapy spider获取到的形式展现。 有些时候spider获取到的页面和普通用户看到的并不相同。 因此该命令可以用来检查spider所获取到的页面,并确认这是您所期望的。
例子:
$ scrapy view http://www.example.com/some/page.html
[ ... browser starts ... ]
shell
- 语法: scrapy shell [url]
- 是否需要项目: no
- 作用:以给定的URL(如果给出)或者空(没有给出URL)启动Scrapy shell。 查看 Scrapy终端(Scrapy shell) 获取更多信息。
例子:
$ scrapy shell http://www.example.com/some/page.html
[ ... scrapy shell starts ... ]
parse
- 语法: scrapy parse <url> [options]
- 是否需要项目: yes
- 作用:获取给定的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]
- 是否需要项目: no
- 作用:获取Scrapy的设定,在项目中运行时,该命令将会输出项目的设定值,否则输出Scrapy默认设定。
例子:
$ scrapy settings --get BOT_NAME
myproject