MrZONT                        2015年08月29日发布                                                                        
  • 推荐                                                                                                                              1 推荐
  • 收藏                                                                                                                              15 收藏,3k 浏览

0. 基本环境说明

  1. 本文截图及运行环境均在Win8上实现(是的,我放假回家了,家里的机器是win8的没有办法),但基本步骤与win 7环境基本相同。(应该把~)ps:我后来换了台win7的电脑,所以这篇文章的环境是win8和win7的结合体~,哇哈哈~,然而这并没有什么卵用~

  2. scrapy版本为1.0.3

  3. 这篇文章基本就是很无耻的翻译了一下官方文档顺便添加了一点自己的理解

  4. 参考文献以及下载链接:

  5. 喜欢的就点推荐+收藏把~这样我会把我知道的都写出来的,哇哈哈~

  6. 我用的操作系统是64位的,但是python用的是32位的,因为32位的包比较全,但是我最近在往64位的服务器上移植,到时候有问题我会及时添加的。

1. scrapy的shell命令详解

1.1 命令概览

首先可以通过以下命令来查看所有scrapy可用的命令类型:

 
scrapy -h

scrapy目前的命令可以分为项目命令全局命令两大类,共14种(嗯 ,我认真的数了两遍),分布也极其对称,项目级命令7种全局命令7种(嗯,我又认真的数了一遍)。 分别是:

全局命令

  • startproject

  • settings

  • runspider

  • shell

  • fetch

  • view

  • version

项目命令

  • crawl

  • check

  • list

  • edit

  • parse

  • genspider

  • bench

哇哈哈,然我们接着开始一一学习一下这些命令吧,有些命令好用的不要不要的哦~

1.2 全局命令解析

1.2.1 startproject 创建项目命令

  • 基本语法:scrapy startproject <project_name>

  • 是否需要项目存在:当然是不需要咯~

其实这个命令我们在之前的教程当中也用过了,应该不陌生,就是在创建一个名为project_name的爬虫框架,供我们调教(猥琐脸)。是创建爬虫项目开天辟地的第一步哟~。

用例

 
scrapy startproject njupt
#嗯,我无耻的修改了官方的例子,在运行命令行的目录下面创建了一个名为njupt的文件夹,里面存放了一个名为njupt的scrapy框架

1.2.2 settings 查看配置文件参数命令

  • 基本语法:scrapy settings [options]

  • 是否需要项目存在:当然是不需要咯~(这是官方写的,貌似有点问题)

嘛这个命令是用来查看项目参数的。官方文档说不需要项目,经过本人测试,如果在项目目录下,就会显示出项目的settings.py里面对应的项目的内容,如果实在项目目录之外,貌似会返回一个scrapy的默认值,我个人建议大家在项目目录下使用这个命令来查看settings.py里面的内容就ok了。

用例

 
scrapy settings --get BOT_NAME

1.2.3 runspider 运行爬虫命令

  • 基本语法:scrapy runspider <spider_file.py>

  • 是否需要项目存在:当然是不需要咯~

貌似这个命令是不依托一个scrapy项目而直接运行一个爬虫的命令。弱弱的说一句,这种没有settings没有pipelines的爬虫真的好么

用例

 
scrapy runspider njupt.py

1.2.4 shell 创建一个shell环境用于调试response的命令(很重要!!!)

  • 基本语法:scrapy shell [url]

  • 是否需要项目存在:当然是不需要咯~

这个命令真的很重要啦~,主要目的是创建一个shell环境用于调试response的命令(嗯,和标题一模一样),因为她太重要了,所以我临时决定回来专门写一篇文章来介绍这个命令,迫不及待的同学去翻官方文档吧~(其实我是累了,因为我一边码字一遍在重装电脑而且现在也半夜十二点多了~说好的早睡又泡汤的)

用例:

 
scrapy shell http://www.njupt.edu.cn

1.2.5 fetch 显示爬取过程

  • 基本语法:scrapy fetch [url]

  • 是否需要项目存在:貌似有没有都行

这个命令其实是在标准输出中显示调用一个爬虫来爬取指定的url的全过程。 要注意的一点是,如果是在一个项目目录下使用这个命令则会默认调用这个项目当中的爬虫,如果在项目目录之外使用这个命令,则会调用scrapy默认的爬虫来爬取。所以有没有项目存在都能运行。

用例:

 
scrapy fetch http://www.njupt.edu.cn
#会显示抓取的过程,以及抓取的html的内容
 
scrapy fetch --nolog --headers http://www.njupt.edu.com/
#可以添加一些参数来,观察各种信息,如添加个:
--nolog 可以忽略很多烦人的日志
--headers 用来查看请求时的头部信息

1.2.6 view 查看页面内容命令

  • 基本语法:scrapy view [url]

  • 是否需要项目存在:无需项目存在

当你对于某些信息死也提取不出来的时候就要考虑使用一下使用这个view了,这个命令是给你下载一个页面并用浏览器打开,目的是让你对比一下scrapy"看到"的页面和你通过浏览器看到的页面有什么不同,这个对于某些动态生成的网页很有作用!但是这里有个坑大家注意一下,我在Win7环境下,使用这个命令的时候在下载对应网页的同时用浏览器打开(目测纯命令行无图形界面的Linux因该不会自动打开浏览器),此时里面的ajax因为有了浏览器打开,又被执行了,所以通过浏览器打开的页面应该和你正常访问的网页并无二致,但并不是真正scrapy看到的网页。如何看到真正的网页内?很简单啦,找到原始地址用sublime打开就是啦~。原始地址就在浏览器的地址栏里哦~

用例:

 
scrapy view http://item.jd.com/1319191.html
#嗯,我背叛了大njupt,因为我们学校的网站太牛X没有使用ajax,所以我就用大JD做例子了。

1.2.7 version 显示版本信息

  • 基本语法:scrapy version [-v]

  • 是否需要项目存在:无需项目存在

此命令很简单,就是显示scrapy的版本,如果加上-v命令则还会显示Python, Twisted和平台的信息,貌似对于bug寻找和报告很有帮助!

1.3 项目命令解析

1.3.1 genspider 通过模板生成爬虫

  • 基本语法:scrapy genspider [-t template] <name> <domain>

  • 是否需要项目存在:项目命令嘛,果断需要~

这个命令主要是帮助我们在编写多个爬虫的时候,利用现有爬虫来快速生成新的爬虫,当然这不是唯一创建新爬虫的方式,骚年,不嫌累的话可以自己重新敲一个~

用例:

 
scrapy genspider -l

通过添加参数-l来查看现有的爬虫模板

 
scrapy genspider -d basic 

通过添加参数-d和模板名称来查看现有模板的内容,嘛如果实在linux环境下会比较好用,我等在win下面混的菜鸟还是右键用sublime来查看内容吧

 
scrapy genspider -t basic example example.com

这就是激动人心的生成爬虫的方式了,通过参数-t后面紧接着的内容是模板名称 新爬虫的名称 新爬虫允许爬取的域名,貌似一般爬虫名称基本都是域名主体呢~,聪明的同学也知道这里新爬虫名称 新爬虫允许爬取的域名分别对应的就是之前上一篇教程提到的nameallowed_domains这两个参数咯。

1.3.2 crawl 启动爬虫命令

  • 基本语法: scrapy crawl <spider>

  • 是否需要项目存在:项目命令嘛,果断需要~

这个命令是很激动人心的,每次写完爬虫就迫不及待的一试,大家在上篇教程中想必也已经实验过了。不过貌似一次只能跑一个爬虫,想运行多个爬虫怎么办呢?我现在想到的两个解决方案 1.自己写一个bat或者shell脚本 2.自己添加一个scrapy的shell命令(没错,听起来屌飞了,我会在以后的教程中告诉你怎么做的,想看的以后的教程,哼哼~,我才不会请你点推荐加收藏呢~)

用例:

 
scrapy crawl njupt #咩哈哈,启动njupt爬虫吧骚年~

1.3.3 check 检查爬虫完整性

  • 基本语法: scrapy check [-l] <spider>

  • 是否需要项目存在:项目命令嘛,果断需要~

这个命令官方写的是Contect检查然后就没了,我在win7下面试了一下,能检查出一部分错误,但是后面加一个-l参数貌似没什么用啊,没有显示出官方文档例子里面的spider列表和函数列表,倒是有一堆warning,我回来研究研究一下源码看看把,这个命令目前就是检查一些语法、importwarning等错误,逻辑错误肯定是查不出来的啦~

用例:

 
scrapy check njupt 

1.3.4 list 查看爬虫列表命令

  • 基本语法: scrapy list

  • 是否需要项目存在:项目命令嘛,果断需要~

这个命令就是查看一下这个项目里面目前有哪些爬虫~,写了很多的爬虫之后打这个命令有一种阅兵的快感呢~,一般linux环境下使用较多~

用例:

 
scrapy list

1.3.5 edit 编辑爬虫命令

  • 基本语法: scrapy edit <spider>

  • 是否需要项目存在:项目命令嘛,果断需要~

典型的在linux里面用的高大上命令啊,输入此命令可以立刻调取settings.py中的editor指定的编辑器来打开爬虫进行编辑(是的,settings.py里面还能配这么屌的参数我也很震惊)。顺便说一句我的win7系统运行之后直接报错...伤心啊

用例:

 
scrapy edit njupt

1.3.6 parse

  • 基本语法: scrapy parse <url> [options]

  • 是否需要项目存在:项目命令嘛,果断需要~

这方法适合测试自己写的spider和后续各种组建如:pipeline等组合使用的情况,我一般用来测试自己编写的spider(在没有见过这个命令之前我一直是用crawl命令来测试的...悲剧啊)。

支持的参数倒是蛮丰富的:

  • --spider=SPIDER: 没有指定spider的情况下其程序搜索,用这个选项可以强行指定某个spider

  • --a NAME=VALUE: 用来设定spider需要的参数,可以多个

  • --callback-c: 指定spider里面用于处理response的函数,没有强行制定的话,默认使用parse函数

  • --pipelines:用来指定后续的pipelines,可以灵活定制哦~

  • --rules-r: 通过CrawlSpider设定的规则来选取对应的函数当作解析response的回调函数

  • --noitems: 不显示抓取的items

  • --nolinks: 不显示提取的链接

  • --nocolour: 输出的结果不要高亮显示(这个选项还是不要用得好)

  • --depth-d: 设置爬取深度,默认为1哦~

  • --verbose-v: 显示被爬取的每层的相关信息

用列:

 
scrapy parse http://www.njupt.edu.cn

1.3.7 bench 硬件测试命令

  • 基本语法: scrapy bench

  • 是否需要项目存在:不需要

这个命令我个人理解就是对你的硬件做一个爬虫的压力测试,看看不考虑网络的情况下你的硬件究竟能将这个爬虫运行的多快。当然这个有点理论速度的味道,实际上你爬起来不可能这个么快。姑且算是告诉你硬件的瓶颈的方法吧。不过我win7上运行了貌似没有什么用,没有出现官方说好的各种参数,回来有空还要仔细研究一下啊。

用例:

 
scrapy bench

我终于写完了,喜欢的就收藏+推荐一下吧,这样我就会更有动力写新的教程了,哇哈哈~

原文地址:https://segmentfault.com/a/1190000003509661

Scrapy的shell命令(转)的更多相关文章

  1. 在Scrapy项目【内外】使用scrapy shell命令抓取 某网站首页的初步情况

    Windows 10家庭中文版,Python 3.6.3,Scrapy 1.5.0, 时隔一月,再次玩Scrapy项目,希望这次可以玩的更进一步. 本文展示使用在 Scrapy项目内.项目外scrap ...

  2. scrapy shell命令的【选项】简介

    在使用scrapy shell测试某网站时,其返回400 Bad Request,那么,更改User-Agent请求头信息再试. DEBUG: Crawled () <GET https://w ...

  3. Scrapy框架的命令行详解【转】

    Scrapy框架的命令行详解 请给作者点赞 --> 原文链接 这篇文章主要是对的scrapy命令行使用的一个介绍 创建爬虫项目 scrapy startproject 项目名例子如下: loca ...

  4. scrapy框架的命令行解释

    scrapy框架的命令解释 创建爬虫项目 scrapy startproject 项目名例子如下: scrapy startproject test1 这个时候爬虫的目录结构就已经创建完成了,目录结构 ...

  5. python3爬虫--shell命令的使用和firefox firebug获取目标信息的xpath

    scrapy version -v #该命令用于查看scrapy安装的相关组件和版本 一个工程下可创建多个爬虫 scrapy genspider rxmetal rxmetal.com scrapy ...

  6. Hadoop Shell命令大全

    hadoop支持命令行操作HDFS文件系统,并且支持shell-like命令与HDFS文件系统交互,对于大多数程序猿/媛来说,shell-like命令行操作都是比较熟悉的,其实这也是Hadoop的极大 ...

  7. Shell命令和流程控制

    Shell命令和流程控制 在shell脚本中可以使用三类命令: 1)Unix 命令: 虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的命令.这些命令通常是用来进行文件和文字 ...

  8. 在程序中执行shell命令

    在linux系统下的操作中我们会经常用到shell命令来进行,一开始学习进程的时候对于shell命令也进行了思考,认为shell命令就是一个进程的外壳,经过了后来的学习对于这一点也有了更多的认识. 用 ...

  9. Linux远程执行Shell命令或脚本

    ## 远程执行shell命令 ssh [user]@[server] '[command]' # eg. ssh root@192.168.1.1 'uptime' ## 远程执行本地shell脚本 ...

随机推荐

  1. android入门到熟练(一)

    1.andro系统架构:Linux内核层(提供驱动),系统运行库层和android运行时库(提供C/C++库的主要特性,如SQLite,OpenGL,Webkit等和Dalvik虚拟机),应用框架层, ...

  2. Vim自动补全神器:YouCompleteMe(转)

    转自:http://blog.jobbole.com/58978/ 可能会有一段时间写linxu,免不了用vim,留着,找时间实操之 原文出处: marchtea 的博客 第一次听说这个插件还是在偶然 ...

  3. CSS3中的选择器

    首先, CSS即层叠样式表(Cascading StyleSheet) CSS3是CSS技术的升级版本,CSS3语言开发是朝着模块化发展的 模块包括: 盒子模型.列表模块.超链接方式 .语言模块 .背 ...

  4. pgsql与mysql 下 varchar类型的数字文本的排序 区别

    两者都有cast函数,但使用方法完全不同. 1.在mysql中,cast( value as type) 将value的数据类型转换成type类型,其type可以为 二进制,同带binary前缀的效果 ...

  5. HTTP 无法注册 URL http://+:80/Temporary_Listen_Addresses/92819ef8-81ea-4bd9-

    今天在练习wcf时,客户端调用服务端方法时出现异常.如下: 未处理System.ServiceModel.AddressAlreadyInUseException Message="HTTP ...

  6. C语言的预处理命令

    C语言编译器处理时经过的第一个步骤是预处理,就是从.c文件处理为.i文件.在预处理时编译器做了一些展开替换的处理. 1>头文件展开,即将#include "stdio.h"类 ...

  7. 我们说的oc是动态运行时语言是什么意思?

    1.KVC和KVO区别,分别在什么情况下使用?  答:KVC(Key-Value-Coding) KVO(Key-Value-Observing)理解KVC与KVO(键-值-编码与键-值-监看) 当通 ...

  8. RestKit:iOS开发必备,告别众多无聊代码

    http://www.csdn.net/article/2014-04-15/2819312-RestKit-frameworkRestKit是一款专为iOS设计的Objective-C框架,旨在与R ...

  9. spm使用之二兼谈spm的贱格

    上一篇还没写完, 因为我觉得太长了, 影响阅读, 就截断继续写. 因为还没有写到修改 创建模块的模板啊. 之所以想到要修改spm用来创建模块的模板, 是因为, 有一天我突然上不了网了, 发现spm完全 ...

  10. 显示 SQLite 日志

    通过在 Logcat 查看 SQL 执行语句可以帮助你调试 SQLite 问题, 使用 ADB SHELL 执行如下命令即可在 Logcat 输出 SQL 执行日志: adb shell setpro ...