Python3爬虫Scrapy框架常用命令

目录

 

全局命令

fetch命令

runspider命令

settings命令

shell命令

startproject命令

version命令

 view命令

项目命令

Bench命令

Genspider命令

Check命令

Crawl命令

List命令

 Edit命令

 Parse命令


全局命令

  •   bench         Run quick benchmark test
  •   fetch         Fetch a URL using the Scrapy downloader
  •   genspider     Generate new spider using pre-defined templates
  •   runspider     Run a self-contained spider (without creating a project)
  •   settings      Get settings values
  •   shell         Interactive scraping console
  •   startproject  Create new project
  •   version       Print Scrapy version
  •   view          Open URL in browser, as seen by Scrapy

fetch命令

fetch命令主要用来显示爬虫爬取的过程。
比如,我们可以通过scrapy fetch 网址”的形式显示出爬取对应网址的过程,从显示爬虫爬取百度首页(http://www.baidu.com) 的过程为例,如下所示。

此时,如果在Scrapy项目目录之外使用该命令,则会调用Scrapy默认的爬虫来进行网页的爬取。如果在Scrapy的某个项目目录内使用该命令,则会调用该项目中的爬虫来进行网页的爬取。
我们在使用fetch命令的时候,同样可以使用某些参数进行相应的控制。
可以通过scrapy fetch -h列出所有可以使用的fetch相关参数。
比如,我们可以通过-headers参数来控制显示对应的爬虫爬取网页时候的头信息,也可以通过-nolog参数来控制不显示日志信息,同时,还可以通过--spider-SPIDER参数来控制使用哪个爬虫,通过-logfile=FILE参数来指定存储日志信息的文件,通过-loglevel-LEVEL
参数来控制日志等级。
如下所示,我们分别通过--headers参数和--nolog参数控制了展现爬虫爬取新浪新闻首页(ttp://news.sina.com.cn/)时候的头信息并且不显示日志信息。

runspider命令

通过Scrapy中的runspider命令我们可以实现不依托Scrapy的爬虫项目,直接运行一个爬虫文件。
下面我们将展示一个运用ruspioler命令运行爬出文件的例子,首先编写一个Scrapy爬虫文件,如下所示。

from scrapy.spiders import Spider

class FirstSpider(Spider):
    name = 'first'
    allowed_domains = ['baidu.com']
    start_urls = ['https://www.baidu.com',]

    def parse(self, response):
        pass

在此,仅需要简单了解该爬虫文件即可,因为在后面我们会详细学习如何编写爬虫文件。首先,定义该爬虫文件的名字为first,同时,定义爬取的起始网址为htp://www.baidu.com。
然后,可以使用runspider命令直接运行该爬虫文件,此时,并不需要依托一个完整的Scrapy项目去运行,只需要拥有对应的爬虫文件即可。
如下所示,我们通过scrapy runspider运行了该爬虫文件,并将日志等级设置成了INFO。

可以看到,通过该指令在不依靠Scrapy项目的情况下最终成功完成了该爬虫文件的运行。

settings命令

我们可以通过Scrapy中的settings 命令查看Scrapy 对应的配置信息。
如果在Scrapy项目目录内使用sttings命令,查看的是对应项目的配置信息,如果在Scrapy项目目录外使用settings命令,查看的是Scrapy默认配置信息。

shell命令

通过shell命令可以启动Scrapy的交互终端(Scrapy shell)。
Scrapy的交互终端经常在开发以及调试的时候用到,使用Scrapy的交互终端可以实现在不启动Scrapy爬虫的情况下,对网站响应进行调试,同样,在该交互终端中,我们也可以写一些Python代码进行相应测试。
比如,可以使用shell命令,为爬取百度首页创建一个交互终端环境,并设置为不输出日志信息,如下所示:
 

 可以看到,在执行了该命令之后,会出现可以使用的Scrapy对象及快捷命令,比如item、response、settings、 spider 等,并进入交互模式,在“>>>”后可以输人交互命令及相应的代码。
在该交互模式中,可以提取出爬取到的网页的标题,此时我们通过XPath表达式进行提取,可能读者此时并不熟悉XPath表达式,我们将会在后面进行XPath表达式的基础讲解,在此,仅需要简单知道下面的XPath表达式“/html/head/title"的意思是:提取该网页<html)> 标签下的<head>标签中<title>标签对应的信息。我们知道,此时该标签中的信息即为该网页的标题信息,所以,下面的XPath表达式“/htm/headtitle”目的就是提取爬取到的网页的标题信息。
如下所示,我们通过sel.xpath对对应信息进行了提取,并且通过Python代码输出了提的信息。

>>> ti=sel. xpath(" /html /head/title")
>>> print (ti)
[<selector xpath=' /html /head/title' data='<title>百度一下,你就知道</tit1e>'>]
>>>
可以看到,data后的内容就是提取到的数据,成功将百度首页的标题“<title> 百度一下,你就知道</title>" 进行了提取。
除此之外,在交互终端中我们还可以进行各种开发调试。
如果我们要退出该交互终端,可以使用exit()实现,如下所示:
>>> exit()
D: \Python35 \myweb\part12>
以上我们分析了Scrapy中的shell命令如何使用,学会使用shell命令,在一定程度 上可以大大方便爬虫的开发与调试,因为通过shell命令,我们可以不创建Scrapy项目就直接对爬虫进行开发和调试。

startproject命令

startproject命令.上-节已经详细分析过,主要用于创建项目。

version命令

通过version命令,可以直接显示Scrapy的版本相关信息。
比如,如果要查看Scrapy 的版本信息,可以通过以下代码实现:

如果还想查看与Scrapy相关的其他版本信息(当然包含上述的Scrapy 版本信息),比如titelptotopltforo的版本的信息,可以在version命令后加上-v参数实现,如下所示:

可以看到,此时已经详细的展示了与Scrapy相关的版本信息。

 view命令

通过view命令,我们可以实现下载某个网页并用浏览器查看的功能。
比如,我们可以通过如下命令下载网易新闻首页( http://www.baidu.com/),并自动用浏览器查看下载的网页。
(venv) D:\pycharmproject\pythonlearning>scrapy view http://www.baidu.com/
执行该命令后,会自动打开浏览器并展示已下载到本地的页面(注意观察,由于网页已下载到本地,所以此时的网址是本地的网页地址),如图12-5所示。

项目命令

接下来,我们详细分析Scrapy项目命令的使用。
由于Scrapy项目命令需要基于Scrapy爬虫项目才可以使用,所以我们首先任意进入一个已经创建的Scrapy爬虫项目,如下所示。
 

(venv) D:\pycharmproject\pythonlearning>cd myfirstpjt

 使用scrapy -h来查看在项目中可用的命令。

Available commands:
  bench         Run quick benchmark test
  check         Check spider contracts
  crawl         Run a spider
  edit          Edit spider
  fetch         Fetch a URL using the Scrapy downloader
  genspider     Generate new spider using pre-defined templates
  list          List available spiders
  parse         Parse URL (using its spider) and print the results
  runspider     Run a self-contained spider (without creating a project)
  settings      Get settings values
  shell         Interactive scraping console
  startproject  Create new project
  version       Print Scrapy version
  view          Open URL in browser, as seen by Scrapy

Bench命令

使用bench命令可以测试本地硬件的性能。
当我们运行scrapy bench的时候,会创建一个本地服务器并且会以最大的速度爬行,在为了测试本地硬件的性能,避免其他过多因素的影响,所以仅进行链接跟进,不进行内容处理。
如下所示,我们使用了scrapy bench对本地硬件的性能进行了测试。
 

可以看到,在得到的测试结果中,单纯就硬件性能来说,显示每分钟大约能爬几千个网页。这只是一个参考标准,在实际运行爬虫项目的时候,会由于各种因素导致速度不同,一般来说, 可以根据实际运行的速度与该参考速度进行对比结果,从而对爬虫项目进行优化与改进。

Genspider命令

可以使用genspider命令来创建Scrapy爬虫文件,这是一种快速创建爬虫文件的方式。使用该命令可以基于现有的爬虫模板直接生成一 个新的爬虫文件,非常方便。同样,需要在Scrapy爬虫项目目录中,才能使用该命令。
可以用该命令的-l参数来查看当前可以使用的爬虫模板,如下所示。

可以看到,当前可以使用的爬虫模板有basic、crawl、 csvfeed、 xmlfeed。
此时,可以基于其中的任意一个爬虫模板来生成一个爬虫文件,比如,我们可以使用basic模板生成-一个爬虫文件, 格式为“scrapy genspider -t模板新爬虫名新爬虫爬取的域名”,如下所示。
 

Check命令

爬虫的测试比较麻烦,所以在Scrapy中使用合同(contract9) 的方式对爬虫进行测试。
使用Scrapy中的check命令,可以实现对某个爬虫文件进行合同(contract)检查。
比如要对刚才基于模板创建的爬虫文件weisuen.py进行合同( contract)检查,我们可以用“scrapy check爬虫名”实现,注意此时“check" 后面的是爬虫名,不是爬虫文件名,所以是没有后缀的,如下所示。

可以看到,此时该爬虫文件的合同检查通过,显示的结果为“OK"。

Crawl命令

可以通过crawl命令来启动某个爬虫,启动格式是“ scrapy crawl爬虫名”。
需要注意的是,crawl 后面跟的是爬虫名,而不是爬虫项目名。

List命令

通过Scrapy中的list命令,可以列出当前可使用的爬虫文件。
比如,我们可以在命令行中进人爬虫项目myfirstpjit所在的目录,然后使用scrapy list直接列出当前可以使用的爬虫文件,如下所示。

可以看到,此时可以使用的爬虫文件有一个,first。

 Edit命令

通过Scrapy中的edit命令,我们可以直接打开对应编辑器对爬虫文件进行编辑,该命令在Windows中执行会出现一点问题,而且在Windows中,我们一般会使用Python IDE (比如PyCharm)直接对爬虫项目进行管理和编辑,但是该命令在Linux中是很方便的。

 Parse命令

通过parse命令,我们可以实现获取指定的URL网址,并使用对应的爬虫文件进行处理和分析。
比如,我们可以使用“scrapy parse http://www.baidu.com "获取百度首页( htp://www.baidu.com),由于在这里没有指定爬虫文件,也没有
指定处理函数,所以此时会使用默认的爬虫文件和默认的处理函数,进行相应的处理,如下所示。

“scrapy parse”命令拥有很多参数,具体有哪些参数我们可以通过scrapy parse -h来查看,如下所示。

Options
=======
--help, -h              show this help message and exit
--spider=SPIDER         use this spider without looking for one
-a NAME=VALUE           set spider argument (may be repeated)
--pipelines             process items through pipelines
--nolinks               don't show links to follow (extracted requests)
--noitems               don't show scraped items
--nocolour              avoid using pygments to colorize the output
--rules, -r             use CrawlSpider rules to discover the callback
--callback=CALLBACK, -c CALLBACK
                        use this callback for parsing, instead looking for a
                        callback
--meta=META, -m META    inject extra meta into the Request, it must be a valid
                        raw json string
--cbkwargs=CBKWARGS     inject extra callback kwargs into the Request, it must
                        be a valid raw json string
--depth=DEPTH, -d DEPTH
                        maximum depth for parsing requests [default: 1]
--verbose, -v           print each depth level one by one

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
 

可以看到,这些参数大致分为两类:普通参数( Options)和全局参数( Global Options),全局参数我们在其他命令中基本上已经看过,所以在这里我们主要关注该命令对应的参数(Options)。
下面归纳了常用的参数及其含义,如表12-2所示。

通计上方的表格可以很清晰地知道narse命今中有哪此常见的参数。

猜你喜欢

转载自blog.csdn.net/someby/article/details/105440171