资讯专栏INFORMATION COLUMN

scrapy入门教程3:scrapy的shell命令

zhongmeizhi / 2690人阅读

摘要:用例运行爬虫命令基本语法是否需要项目存在当然是不需要咯貌似这个命令是不依托一个项目而直接运行一个爬虫的命令。用例我终于写完了,喜欢的就收藏推荐一下吧,这样我就会更有动力写新的教程了,哇哈哈

0. 基本环境说明

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

scrapy版本为1.0.3

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

参考文献以及下载链接:

官方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的爬虫框架,供我们调教(猥琐脸)。是创建爬虫项目开天辟地的第一步哟~。

用例

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

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

貌似这个命令是不依托一个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]

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

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

用例:

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

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

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

用例:

scrapy crawl njupt #咩哈哈,启动njupt爬虫吧骚年~
1.3.3 check 检查爬虫完整性

基本语法: scrapy check [-l]

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

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

用例:

scrapy check njupt 
1.3.4 list 查看爬虫列表命令

基本语法: scrapy list

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

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

用例:

scrapy list
1.3.5 edit 编辑爬虫命令

基本语法: scrapy edit

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

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

用例:

scrapy edit njupt
1.3.6 parse

基本语法: scrapy parse [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://www.ucloud.cn/yun/37603.html

相关文章

  • scrapy入门教程——爬取豆瓣电影Top250!

    摘要:注意爬豆爬一定要加入选项,因为只要解析到网站的有,就会自动进行过滤处理,把处理结果分配到相应的类别,但偏偏豆瓣里面的为空不需要分配,所以一定要关掉这个选项。 本课只针对python3环境下的Scrapy版本(即scrapy1.3+) 选取什么网站来爬取呢? 对于歪果人,上手练scrapy爬虫的网站一般是官方练手网站 http://quotes.toscrape.com 我们中国人,当然...

    senntyou 评论0 收藏0
  • 小白爬虫scrapy第一篇

    摘要:如果想先学习的话推荐看下基础教学菜鸟教程这个网站的教程里面的内容还是挺不错的非常适合小白学习好了废话不多说开始学习如何安装吧安装我上篇小白爬虫篇简介下面的链接安装包后在或者在中输入命令过程中可能会问你是否安装其他扩展包选按回车就好了安装完成 如果想先学习python的话推荐看下Python基础教学|菜鸟教程这个网站的教程,里面的内容还是挺不错的非常适合小白学习好了废话不多说开始学习如何...

    beanlam 评论0 收藏0
  • Scrapy Shell

    摘要:如果安装了,终端将使用替代标准终端。终端与其他相比更为强大,提供智能的自动补全,高亮输出,及其他特性。也提供了一些快捷方式例如或同样可以生效如之前的案例。当然作用不仅仅如此,但是不属于我们课程重点,不做详细介绍。 Scrapy Shell Scrapy终端是一个交互终端,我们可以在未启动spider的情况下尝试及调试代码,也可以用来测试XPath或CSS表达式,查看他们的工作方式,方便...

    HmyBmny 评论0 收藏0
  • Scrapy Demo

    摘要:用于下载网页内容,并将网页内容返回给。中间件位于引擎和下载器之间的钩子框架,主要是处理引擎与下载器之间的请求及响应。包含了在启动时进行爬取的列表。对象经过调度,执行生成对象并送回给方法一般返回实例。 Scrapy 是什么 Scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取 (更确切...

    VEIGHTZ 评论0 收藏0
  • Scrapy基本用法

    安装scrapy 不同操作系统安装操作不同,可以直接看官方文档Install Scrapy 创建一个项目 在命令行输入 scrapy startproject tutorial 进入项目目录创建一个spider cd tutorial scrapy genspider quotes domain.com import scrapy class QuotesSpider(scrapy.Spider...

    URLOS 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<