Scrapy的shell命令(转)
- 推荐 1 推荐
- 收藏 15 收藏,3k 浏览
0. 基本环境说明
本文截图及运行环境均在Win8上实现(是的,我放假回家了,家里的机器是win8的没有办法),但基本步骤与win 7环境基本相同。(应该把~)ps:我后来换了台win7的电脑,所以这篇文章的环境是win8和win7的结合体~,哇哈哈~,然而这并没有什么卵用~
scrapy版本为1.0.3
这篇文章基本就是很无耻的翻译了一下官方文档顺便添加了一点自己的理解
参考文献以及下载链接:
喜欢的就点推荐+收藏把~这样我会把我知道的都写出来的,哇哈哈~
我用的操作系统是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
后面紧接着的内容是模板名称
新爬虫的名称
新爬虫允许爬取的域名
,貌似一般爬虫名称基本都是域名主体呢~,聪明的同学也知道这里新爬虫名称
新爬虫允许爬取的域名
分别对应的就是之前上一篇教程提到的name
和allowed_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
,我回来研究研究一下源码看看把,这个命令目前就是检查一些语法、import
和warning
等错误,逻辑错误肯定是查不出来的啦~
用例:
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命令(转)的更多相关文章
- 在Scrapy项目【内外】使用scrapy shell命令抓取 某网站首页的初步情况
Windows 10家庭中文版,Python 3.6.3,Scrapy 1.5.0, 时隔一月,再次玩Scrapy项目,希望这次可以玩的更进一步. 本文展示使用在 Scrapy项目内.项目外scrap ...
- scrapy shell命令的【选项】简介
在使用scrapy shell测试某网站时,其返回400 Bad Request,那么,更改User-Agent请求头信息再试. DEBUG: Crawled () <GET https://w ...
- Scrapy框架的命令行详解【转】
Scrapy框架的命令行详解 请给作者点赞 --> 原文链接 这篇文章主要是对的scrapy命令行使用的一个介绍 创建爬虫项目 scrapy startproject 项目名例子如下: loca ...
- scrapy框架的命令行解释
scrapy框架的命令解释 创建爬虫项目 scrapy startproject 项目名例子如下: scrapy startproject test1 这个时候爬虫的目录结构就已经创建完成了,目录结构 ...
- python3爬虫--shell命令的使用和firefox firebug获取目标信息的xpath
scrapy version -v #该命令用于查看scrapy安装的相关组件和版本 一个工程下可创建多个爬虫 scrapy genspider rxmetal rxmetal.com scrapy ...
- Hadoop Shell命令大全
hadoop支持命令行操作HDFS文件系统,并且支持shell-like命令与HDFS文件系统交互,对于大多数程序猿/媛来说,shell-like命令行操作都是比较熟悉的,其实这也是Hadoop的极大 ...
- Shell命令和流程控制
Shell命令和流程控制 在shell脚本中可以使用三类命令: 1)Unix 命令: 虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的命令.这些命令通常是用来进行文件和文字 ...
- 在程序中执行shell命令
在linux系统下的操作中我们会经常用到shell命令来进行,一开始学习进程的时候对于shell命令也进行了思考,认为shell命令就是一个进程的外壳,经过了后来的学习对于这一点也有了更多的认识. 用 ...
- Linux远程执行Shell命令或脚本
## 远程执行shell命令 ssh [user]@[server] '[command]' # eg. ssh root@192.168.1.1 'uptime' ## 远程执行本地shell脚本 ...
随机推荐
- JS-SDK微信支付开发攻略
一.吐槽篇 一个字——坑!两个字——很坑!三个字——非常坑!首先,微信支付接口作为微信开发接口的一部分,竟然有一本书那么厚的官方文档,共36页,更重要的是,这36页还不能把开发的流程说清楚,描述过于分 ...
- ASP.NET MVC轻教程 Step By Step 6——改进表单
上一节我们使用原始的HTML表单来完成留言功能,但是ASP.NET MVC提供了丰富的HTML辅助方法来帮助我们构建更简洁优雅的表单. Step 1. 修改Form标签 首先,我们可以使用Html.B ...
- KVC 与 KVO 理解-b
KVC 与 KVO 是 Objective C 的关键概念,个人认为必须理解的东西,下面是实例讲解. Key-Value Coding (KVC) KVC,即是指 NSKeyValueCoding,一 ...
- 64位Win7下安装并配置Python3的深度学习库:Theano
注:本文全原创,作者:Noah Zhang (http://www.cnblogs.com/noahzn/) 这两天在安装Python的深度学习库:Theano.尝试了好多遍,CMake.MinGW ...
- base64的一个应用情景
AddActivity.xml rushrank.xml 不过AddActivity.xml不也是通过二进制流就传过去了吗? 事实上是可以的,只要不将这些二进制的数据写下来,传播是可以的,只 ...
- bzoj 1053: [HAOI2007]反素数ant 搜索
1053: [HAOI2007]反素数ant Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1497 Solved: 821[Submit][Sta ...
- libstdc++.so.5: cannot open shared object file: No such file or directory
中文分词一般会选择ICTCLAS的模块,虽然不能说很完美,但也算是一个不错的选择.它提供了windows版本和linux版本,并支持C/C#/JNI接口.这本来是一个不错的事情,但版本一多,官方似乎就 ...
- DestroyWindow
假设自己通过new创建了一个窗口对象pWnd,然后pWnd->Create.则销毁窗口的调用次序: 1. 手工调用pWnd->DestroyWindow(): 2. ...
- Sitemesh 3 的使用及配置
1 . Sitemesh 3 简介 Sitemesh 是一个网页布局和修饰的框架,基于 Servlet 中的 Filter,类似于 ASP.NET 中的‘母版页’技术.参考:百度百科,相关类似技术:A ...
- [LeetCode#163] Missing Ranges
Problem: Given a sorted integer array where the range of elements are [lower, upper] inclusive, retu ...