本文截图及运行环境均在Win8上实现(是的,我放假回家了,家里的机器是win8的没有办法),但基本步骤与win 7环境基本相同。(应该把~)ps:我后来换了台win7的电脑,因此这篇文章的环境是win8和win7的结合体~,哇哈哈~,然而这并无什么卵用~html
scrapy版本为1.0.3python
这篇文章基本就是很无耻的翻译了一下官方文档顺便添加了一点本身的理解linux
参考文献以及下载连接:面试
官方1.0.3英文文档下载ajax
喜欢的就点推荐+收藏把~这样我会把我知道的都写出来的,哇哈哈~shell
我用的操做系统是64位的,可是python用的是32位的,由于32位的包比较全,可是我最近在往64位的服务器上移植,到时候有问题我会及时添加的。浏览器
首先能够经过如下命令来查看全部scrapy可用的命令类型:服务器
scrapy -h
scrapy目前的命令能够分为项目命令和全局命令两大类,共14种(嗯 ,我认真的数了两遍),分布也极其对称,项目级命令7种全局命令7种(嗯,我又认真的数了一遍)。
分别是:网络
全局命令框架
startproject
settings
runspider
shell
fetch
view
version
项目命令
crawl
check
list
edit
parse
genspider
bench
哇哈哈,然咱们接着开始一一学习一下这些命令吧,有些命令好用的不要不要的哦~
基本语法:scrapy startproject <project_name>
是否须要项目存在:固然是不须要咯~
其实这个命令咱们在以前的教程当中也用过了,应该不陌生,就是在建立一个名为project_name
的爬虫框架,供咱们调教(猥琐脸)。是建立爬虫项目开天辟地的第一步哟~。
用例
scrapy startproject njupt #嗯,我无耻的修改了官方的例子,在运行命令行的目录下面建立了一个名为njupt的文件夹,里面存放了一个名为njupt的scrapy框架
基本语法:scrapy settings [options]
是否须要项目存在:固然是不须要咯~(这是官方写的,貌似有点问题)
嘛这个命令是用来查看项目参数的。官方文档说不须要项目,通过本人测试,若是在项目目录下,就会显示出项目的settings.py
里面对应的项目的内容,若是实在项目目录以外,貌似会返回一个scrapy的默认值,我我的建议你们在项目目录下使用这个命令来查看settings.py
里面的内容就ok了。
用例
scrapy settings --get BOT_NAME
基本语法:scrapy runspider <spider_file.py>
是否须要项目存在:固然是不须要咯~
貌似这个命令是不依托一个scrapy
项目而直接运行一个爬虫的命令。弱弱的说一句,这种没有settings
没有pipelines
的爬虫真的好么
用例
scrapy runspider njupt.py
基本语法:scrapy shell [url]
是否须要项目存在:固然是不须要咯~
这个命令真的很重要啦~,主要目的是建立一个shell环境用于调试response的命令(嗯,和标题如出一辙),由于她过重要了,因此我临时决定回来专门写一篇文章来介绍这个命令,火烧眉毛的同窗去翻官方文档吧~(其实我是累了,由于我一边码字一遍在重装电脑并且如今也半夜十二点多了~说好的早睡又泡汤的)
用例:
scrapy shell http://www.njupt.edu.cn
基本语法:scrapy fetch [url]
是否须要项目存在:貌似有没有都行
这个命令实际上是在标准输出中显示调用一个爬虫来爬取指定的url的全过程。
要注意的一点是,若是是在一个项目目录下使用这个命令则会默认调用这个项目当中的爬虫,若是在项目目录以外使用这个命令,则会调用scrapy默认的爬虫来爬取。因此有没有项目存在都能运行。
用例:
scrapy fetch http://www.njupt.edu.cn #会显示抓取的过程,以及抓取的html的内容
scrapy fetch --nolog --headers http://www.njupt.edu.com/ #能够添加一些参数来,观察各类信息,如添加个: --nolog 能够忽略不少烦人的日志 --headers 用来查看请求时的头部信息
基本语法:scrapy view [url]
是否须要项目存在:无需项目存在
当你对于某些信息死也提取不出来的时候就要考虑使用一下使用这个view
了,这个命令是给你下载一个页面并用浏览器打开,目的是让你对比一下scrapy"看到"的页面和你经过浏览器看到的页面有什么不一样,这个对于某些动态生成的网页颇有做用!可是这里有个坑你们注意一下,我在Win7环境下,使用这个命令的时候在下载对应网页的同时用浏览器打开(目测纯命令行无图形界面的Linux因该不会自动打开浏览器),此时里面的ajax由于有了浏览器打开,又被执行了,因此经过浏览器打开的页面应该和你正常访问的网页并没有二致,但并非真正scrapy看到的网页。如何看到真正的网页内?很简单啦,找到原始地址用sublime打开就是啦~。原始地址就在浏览器的地址栏里哦~
用例:
scrapy view http://item.jd.com/1319191.html #嗯,我背叛了大njupt,由于咱们学校的网站太牛X没有使用ajax,因此我就用大JD作例子了。
基本语法:scrapy version [-v]
是否须要项目存在:无需项目存在
此命令很简单,就是显示scrapy的版本,若是加上-v
命令则还会显示Python, Twisted和平台的信息,貌似对于bug寻找和报告颇有帮助!
基本语法: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
后面紧接着的内容是模板名称
新爬虫的名称
新爬虫容许爬取的域名
,貌似通常爬虫名称基本都是域名主体呢~,聪明的同窗也知道这里新爬虫名称
新爬虫容许爬取的域名
分别对应的就是以前上一篇教程提到的name
和allowed_domains
这两个参数咯。
基本语法: scrapy crawl <spider>
是否须要项目存在:项目命令嘛,果断须要~
这个命令是很激动人心的,每次写完爬虫就火烧眉毛的一试,你们在上篇教程中想必也已经实验过了。不过貌似一次只能跑一个爬虫,想运行多个爬虫怎么办呢?我如今想到的两个解决方案
1.本身写一个bat或者shell脚本
2.本身添加一个scrapy的shell命令(没错,听起来屌飞了,我会在之后的教程中告诉你怎么作的,想看的之后的教程,哼哼~,我才不会请你点推荐加收藏呢~)
用例:
scrapy crawl njupt #咩哈哈,启动njupt爬虫吧骚年~
基本语法: scrapy check [-l] <spider>
是否须要项目存在:项目命令嘛,果断须要~
这个命令官方写的是Contect检查而后就没了,我在win7下面试了一下,能检查出一部分错误,可是后面加一个-l
参数貌似没什么用啊,没有显示出官方文档例子里面的spider列表和函数列表,却是有一堆warning
,我回来研究研究一下源码看看把,这个命令目前就是检查一些语法、import
和warning
等错误,逻辑错误确定是查不出来的啦~
用例:
scrapy check njupt
基本语法: scrapy list
是否须要项目存在:项目命令嘛,果断须要~
这个命令就是查看一下这个项目里面目前有哪些爬虫~,写了不少的爬虫以后打这个命令有一种阅兵的快感呢~,通常linux环境下使用较多~
用例:
scrapy list
基本语法: scrapy edit <spider>
是否须要项目存在:项目命令嘛,果断须要~
典型的在linux里面用的高大上命令啊,输入此命令能够马上调取settings.py
中的editor
指定的编辑器来打开爬虫进行编辑(是的,settings.py
里面还能配这么屌的参数我也很震惊)。顺便说一句个人win7系统运行以后直接报错...伤心啊
用例:
scrapy edit njupt
基本语法: 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
基本语法: scrapy bench
是否须要项目存在:不须要
这个命令我我的理解就是对你的硬件作一个爬虫的压力测试,看看不考虑网络的状况下你的硬件究竟能将这个爬虫运行的多快。固然这个有点理论速度的味道,实际上你爬起来不可能这个么快。姑且算是告诉你硬件的瓶颈的方法吧。不过我win7上运行了貌似没有什么用,没有出现官方说好的各类参数,回来有空还要仔细研究一下啊。
用例:
scrapy bench
我终于写完了,喜欢的就收藏+推荐一下吧,这样我就会更有动力写新的教程了,哇哈哈~