scrapy命令行与shell

scrapy命令行介绍

scrapy提供了2种类型的命令,一种必须在scrapy项目种运行,称为项目命令;另一种则不需要在Scrapy项目中运行,称为全局命令。

全局命令有7个

startproject:创建项目
settings:设置信息
runspider:运行爬虫
shell:打开Shell调试
fetch:下载网页信息
view:使用浏览器打开指定网址
version:查看版本号

项目命令有7个:

crawl:运行指定爬虫
check:检查爬虫代码
list:列出所有爬虫
edit:使用默认的编辑器编辑爬虫文件
parse:使用爬虫抓取指定的URL
genspider:创建爬虫
bench:快速的性能测试

查看命令如何使用,在命令行输入

scrapy view -h即可

创建scrapy爬虫的流程

1.使用startproject创建项目
scrapy startproject <project_name>[project_dir]
如果没有指定url则创建的目录会与项目同名
2.使用genspider创建爬虫
该命令需要进入project_name目录执行

scrapy genspider [-t template]<name> <domain>

-t可以指定爬虫的模板,name为爬虫名称,domain用于生成allowed_domains和start_urls Spider属性值。

爬虫的模板有如下4个

basic
crawl
csvfeed
xmlfeed

basic为基本爬虫模板,crawl模板生成继承CrawlSpider爬虫类的Spider,csvfeed、xmlfeed分别生成继承CSVFeedSpider与XMLFeedSpider爬虫类的Spider。

例如创建爬虫,最后一项是域名,没写www是应为这是服务器名,http://是协议

scrapy genspider -t crawl test baidu.com

启动爬虫

scrapy crawl <spidername>

使用list查看爬虫

scrapy list

使用fetch获取数据

scrapy fetch [option] <url>

使用runspider运行爬虫

scrqpy runspider [option] spider.py
该命令可以在未创建项目时直接运行Spider爬虫文件,他比较有用的参数是--output=FILE或者-o FILE,将抓取结果保存到FILE中

通过view使用浏览器打开URL

scrapy view <url> [option]
这个可以作用在scrapy下载的页面于我们使用浏览器看到的页面并不一致时候,我们可以通过下载该页面来进行比较。

使用parse测试爬虫

scrapy parse [options] url的链接
可以为此命令指定Spider、Pipeline(管道)、回调函数等一系列爬虫系数。
常用参数具体如下:

--spider=SPIDER:使用特定的爬虫处理
--a NAME=VALUE:设定爬虫参数
--callback or -c:处理Response的回调函数
--meta or -m:为Request穿的参数,例如- meta='{"foo":"bar"}'
--pipelines:使用管道处理Item
--rules or -r:使用CrawlSpider时指定的rules
--noitems:不显示爬取的Item
--nolinks:不显示解析的链接

你回去会看书么,你在干什么
把这本书借回去之后,今天你能看完么,或者说所谓的抄完

这是14号晚上8点左右写的,原指望着回去可以看会书,但没看,很悲催。
15号一天也没看书,直接玩去了,晒了被子,在房间里过了一天,基本上都是看电视打游戏。
很悲催。
这是16号,我8.40起床,由于之前的操劳,我的起床时间渐渐往后推,所以我需要慢慢的锻炼下,把我的起床时间往前推。

Scrapy Shell命令行

是一个交互终端,可以在未启动Spider的情况下调试代码。其本意是用来测试提取数据的代码,不过也可以将其作为正常的python终端,在上面运行测试任何Python代码。
该终端是用来测试XPath和CSS表达式,测试其能否从抓取的网页中正确的提取数据。因此,无须启动爬虫,我们可以编写代码边测试,无需每次修改代码之后测试整个爬虫来查看抓取结果。

Shell的启动命令为:

scrapy shell <url>
url为带爬取的地址。

Shell也可以打开本地文件。

读取当前目录下的文件需要加上路径./,相对路径使用../跳转到其他目录

Scrapy的特殊命令:

shelp():打印出所有可使用的属性与命令
fetch(url[,redict=True]):从给定的URL获取一个新的Response,同时更新所有相关的项目数据。当指定redirect=False时,不会获取重定向的数据。
fetch(request):根据给定的Request获取一个新的Response,同时更新所有相关的项目数据。
view(reponse):使用指定的Response打开浏览器,方便检查抓取数据。当使用这条命令的时候,为使外部的图像或者表格等正确显示,会自动为Response中添加一个<base>标签,指定基准URL,也就是Response对应的URL

使用Scrapy Shell下载页面时,会自动生成一些对象,分别说明如下:

crawler:当前使用的crawel
spider:处理当前页面使用的spider,当没有指定spider时,则是一个Spider对象。
request:获取更新页面所对应的Request
response:获取更新页面所对应的Response
settings:当前的Scrapy配置命令

使用scrapy shell 时会有大量的日志,可以使用 --nolog不打印日志

posted @ 2021-10-16 12:20  索匣  阅读(67)  评论(0编辑  收藏  举报