Python Scrapy 命令行工具

scrapy.cfg存放的目录认定是 项目的根目录

scrapy 针对不同目的提供了多个命令。

创建项目

$ scrapy startproject my_pro

有些Scrapy命令(比如crawl)要求必须在Scrapy项目中运行,有些则不用

# 全局命令(不需要在项目中执行):
startproject
settings
runspider
shell
fetch
view
version

# 项目命令(必须在项目中执行):
crawl
check
list
edit
parse
genspider
bench

命令注解


startproject

  • 语法:scrapy startproject <project_name>
  • 全局命令

project_name 文件夹下创建一个名为 project_nameScrapy项目,如上边例子。


genspider

  • 语法:scrapy genspider [-t template] <name> <domain>
  • 项目命令

在当前项目中创建spider

这仅仅是创建spider的一种快捷方法。该方法可以使用提前定义好的模板来生成spider。您也可以自己创建spider的源码文件。

查看模板的方法如下:

# 查看模板
$ scrapy genspider -l
Available templates:
  basic
  crawl
  csvfeed
  xmlfeed

# 编辑模板
$ 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

根据模板来生成spider

$ scrapy genspider -t basic sina sina.com

$ scrapy genspider baidu baidu.com

$ scrapy genspider zhihu zhihu.com

$ scrapy list
baidu
sina
zhihu

$ ls my_pro/spiders/
baidu.py  baidu.pyc  __init__.py  __init__.pyc  sina.py  sina.pyc  zhihu.py  zhihu.pyc

crawl

  • 语法:scrapy crawl <spider>
  • 项目命令

使用spider进行爬取

# 例子
$ scrapy crawl myspider

check

  • 语法:scrapy check [-l] <spider>
  • 项目命令

运行contract检查。


list

  • 语法:scrapy list
  • 项目命令

列出当前项目中所有可用的spider。每行输出一个spider

# 例子
$ scrapy list
baidu
sina
zhihu

edit

  • 语法:scrapy edit <spider>
  • 项目命令

使用 EDITOR 中设定的编辑器编辑给定的spider

# 例子
$ scrapy edit baidu

fetch

  • 语法:scrapy fetch <url>
  • 全局命令或项目命令,但结果不同

使用Scrapy下载器(downloader)下载给定的URL

该命令以spider下载页面的方式获取页面。例如,如果spiderUSER_AGENT 属性修改了 User Agent,该命令将会使用该属性。

因此,您可以使用该命令来查看spider如何获取某个特定页面。

该命令如果非项目中运行则会使用默认Scrapy downloader设定。

# 例子:项目外边执行

$ scrapy fetch --nolog --headers http://www.baidu.com
> Accept-Language: en
> Accept-Encoding: gzip,deflate
> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
> User-Agent: Scrapy/1.1.1 (+http://scrapy.org)
>
< Bdqid: 0xfbf98a3b0000db32
...
...
...

$ scrapy fetch --nolog  http://www.baidu.com
...
...
...

view

  • 语法:scrapy view <url>
  • 全局命令

在浏览器中打开给定的URL,并以Scrapy spider获取到的形式展现。 有些时候spider获取到的页面和普通用户看到的并不相同。 因此该命令可以用来检查spider所获取到的页面,并确认这是您所期望的。

$ scrapy view http://www.baidu.com

shell

  • 语法:scrapy shell [url]
  • 全局命令

以给定的URL(如果给出)或者空(没有给出URL)启动Scrapy shell

$ scrapy shell
$ scrapy shell http://www.baidu.com

parse

  • 语法:scrapy parse <url> [options]
  • 全局命令

获取给定的URL并使用相应的spider分析处理。如果您提供 --callback 选项,则使用spider的该方法处理,否则使用 parse


settings

  • 语法:scrapy settings [options]
  • 全局命令

获取Scrapy的设定

在项目中运行时,该命令将会输出项目的设定值,否则输出Scrapy默认设定。

$ scrapy settings --get BOT_NAME
scrapybot
$ scrapy settings --get DOWNLOAD_DELAY
0

runspider

  • 语法:scrapy runspider <spider_file.py>
  • 全局命令

在未创建项目的情况下,运行一个编写在Python文件中的spider

$ scrapy runspider first_mod.py

bench

  • 语法:scrapy bench
  • 全局命令

Scrapy提供了一个简单的性能测试工具。其创建了一个本地HTTP服务器,并以最大可能的速度进行爬取。 该测试性能工具目的是测试Scrapy在您的硬件上的效率,来获得一个基本的底线用于对比。 其使用了一个简单的spider,仅跟进链接,不做任何处理。

$ scrapy bench
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容