Scrapy框架的命令行详解(转)


这篇文章主要是对的scrapy命令行使用的一个介绍

1.创建爬虫项目

localhost:spider zhaofan$ scrapy startproject test1

New Scrapy project 'test1', using template directory'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/scrapy/templates/project', createdin:

    /Users/zhaofan/Documents/python_project/spider/test1

You can start your first spider with:

    cd test1

    scrapy genspider example example.com

localhost:spider zhaofan$   

这个时候爬虫的目录结构就已经创建完成了,目录结构如下:

|____scrapy.cfg

|____test1

| |______init__.py

| |____items.py

| |____middlewares.py

| |____pipelines.py

| |____settings.py

| |____spiders

| | |______init__.py    



接着我们按照提示可以生成一个spider,这里以百度作为例子,生成spider的命令格式为;

scrapy genspider 爬虫名字 爬虫的网址(实际生成代码)

localhost:test1 zhaofan$ scrapy genspider baiduSpider baidu.com

Created spider 'baiduSpider'using template'basic'in module:

  test1.spiders.baiduSpider

localhost:test1 zhaofan$



这里的命令分为全局的命令和项目的命令,全局的命令表示可以在任何地方使用,而项目的命令只能在项目目录下使用


全局的命令有:

startproject

genspider

settings

runspider

shell

fetch

view

version


项目命令有:

crawl

check

list

edit

parse

bench


startproject


这个命令没什么过多的用法,就是在创建爬虫项目的时候用

# 创建项目scrapy startprojects myproject


genspider

用于生成爬虫,这里scrapy提供给我们不同的几种模板生成spider,默认用的是basic,我们可以通过命令查看所有的模板

# 列出所有的模版

scrapy genspider -l

localhost:test1 zhaofan$ scrapy genspider -l

Available templates:

  basic

  crawl

  csvfeed

  xmlfeed

localhost:test1 zhaofan$


当我们创建的时候可以指定模板,不指定默认用的basic,如果想要指定模板则通过

scrapy genspider -t 模板名字


# 生成一个项目模版scrapy genspider -t crawl zhihu wwww.zhihu.com

localhost:test1 zhaofan$ scrapy genspider -t crawl zhihuspider zhihu.com

Created spider 'zhihuspider'using template'crawl'in module:

  test1.spiders.zhihuspider

localhost:test1 zhaofan$


crawl

这个是用去启动spider爬虫格式为:

scrapy crawl 爬虫名字

# 运行spiderscrapy crawl spidername

这里需要注意这里的爬虫名字和通过scrapy genspider 生成爬虫的名字是一致的

check


用于检查代码是否有错误,scrapy check

# check 用来检查代码是否有错误scrapy check


list

scrapy list列出所有可用的爬虫

# list 返回项目里面所有spider的名称scrapy list


edit

edit 在命令行下编辑spider ### 不建议运行

scrapy edit myspider


fetch

scrapy fetch url地址

该命令会通过scrapy downloader 讲网页的源代码下载下来并显示出来

这里有一些参数:

--nolog 不打印日志

--headers 打印响应头信息

--no-redirect 不做跳转

# fetch 输出日志及网页源代码

scrapy fetch http://www.baidu.com

# fetch --nolog 只输出源代码

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

# fetch --nolog --headers 输出响应头

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

# --nolog --no--redirect 禁止重定向

scrapy fetch --nolog --no--redirect http://www.baidu.com 


view


scrapy view url地址

该命令会讲网页document内容下载下来,并且在浏览器显示出来


因为现在很多网站的数据都是通过ajax请求来加载的,这个时候直接通过requests请求是无法获取我们想要的数据,所以这个view命令可以帮助我们很好的判断

shell

这是一个命令行交互模式

通过scrapy shell url地址进入交互模式

# shell 命令行交互模式csrapy shell http://www.baidu.com

这里我么可以通过css选择器以及xpath选择器获取我们想要的内容(xpath以及css选择的用法会在下个文章中详细说明),例如我们通过scrapy shellhttp://www.baidu.com


这里最后给我们返回一个response,这里的response就和我们通requests请求网页获取的数据是相同的。

view(response)会直接在浏览器显示结果

response.text 获取网页的文本

下图是css选择器的一个简单用法



settings

获取当前的配置信息

通过scrapy settings -h可以获取这个命令的所有帮助信息

# 获取帮助信息scrapy settings -h


localhost:jobboleSpider zhaofan$ scrapy settings -h

Usage

=====

  scrapy settings [options]

Get settings values

Options

=======

--help, -h              show this help message and exit

--get=SETTING          print raw setting value

--getbool=SETTING      print setting value, interpreted as a boolean

--getint=SETTING        print setting value, interpreted as an integer

--getfloat=SETTING      print setting value, interpreted as a float

--getlist=SETTING      print setting value, interpreted as a list

Global Options

--------------

--logfile=FILE          log file. if omitted stderr will be used

--loglevel=LEVEL, -L LEVEL

                        log level (default: DEBUG)

--nolog                disable logging completely

--profile=FILE          write python cProfile stats to FILE

--pidfile=FILE          write process ID to FILE

--set=NAME=VALUE, -s NAME=VALUE

                        set/override setting (may be repeated)

--pdb                  enable pdb on failure

拿一个例子进行简单的演示:(这里是我的这个项目的settings配置文件中配置了数据库的相关信息,可以通过这种方式获取,如果没有获取的则为None)

localhost:jobboleSpider zhaofan$ scrapy settings --get=MYSQL_HOST

192.168.1.18l

ocalhost:jobboleSpider zhaofan$



runspider

这个和通过crawl启动爬虫不同,这里是scrapy runspider 爬虫文件名称

所有的爬虫文件都是在项目目录下的spiders文件夹中

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

推荐阅读更多精彩内容