scrapy项目中执行爬取的命令是,scrapy安装命令
【垃圾爬虫】垃圾安装,详细说明参数讲解和首个工程实例_wx62cb940602a10 _博客的技术博客
Scrapy安装,详细说明参数说明和实际案例1。报废安装1.1安装模块1.2安装验证2。Scrapy指令2.1如何查询指令2.2全局指令2.2.1 fetch指令2.2.2 shell指令2.2.3 runspider指令2.4版本和视图指令2.2.5 startproject指令2.2.6 genspider指令2.3 project指令2.3.1 bench指令2.3.2爬虫模板2.3.3检查指令2.3.4列表指令2.3.5 c Rawl指令2.3.6编辑指令2.3.7解析指令2.3.8设置指令3抓取行情网站3.1创建蜘蛛爬虫模板3.2操作创建的文件3.3开始运行Scrapy 3.4代码分析3.5 Python中的文件存储3.6提取数据的方法3.7分析网页,明确目标3.8实战分析
1.Scrapy安装1.1安装模块安装过程,会和你自己的python版本有点关系。建议使用python3.7.3/3.7.4(自己用的3.7.4版本)。直接通过以下指令在命令行中成功安装,并且不会出现错误消息。
PIP INSTALL-I https://pypi.tuna.tsinghua.edu.cn/simple Scrapy 1.2安装验证安装完成后,可以导入python进行检测。执行代码如下。如果没有报告错误,则安装成功。
2.Scrapy指令2.1如何查询指令Scrapy框架是通过命令行执行的。如果想了解scrapy相关的指令,可以打开命令行,然后输入scrapy -h查询指令(注意要退出之前用来验证安装成功的python环境,直接在系统默认路径下输入),如下,其中Scrapy指令分为全局指令和项目指令。
2.2全局指令scrapy -h找到的命令,即上图中可用命令的以下命令,属于全局指令(在创建的项目之外也可以使用的指令)。
2.2.1 fetch指令用于抓取网页,与项目无关,即不需要创建项目就可以直接抓取网页,并且可以显示抓取过程,就像我们平时写的爬虫一样。
-h的意思是检查帮助,所以你也可以用它来检查fetch的用法(但是注意基本格式是scrapy fetch -h,对应上图的最后两三行),如下
注意用法核心的三行提示,介绍了取指令的用法。还有一个常用的参数,即- nolog,它不显示日志信息。其余的选项和全局选项是可选参数。比如用fetch指令抓取百度首页运行如下。以下带有时间和之后的输出属于爬行过程中的日志信息。
在日志信息的底部,会有请求抓取的网页信息,如下所示
那就有问题了。如果您希望抓取这么长时间的日志信息,并且不希望显示它,可以设置前面提到的-NOLOG参数。这里有一个方便之处。不需要重新输入just命令。你只需要在命令行上按“up”键(即上下左右键)就可以显示刚刚输入的命令,然后在后面输入-NOLOG。
如果爬整本笑话书,就有问题了。需要设置具体的抓取参数,才能获取网页信息。
综上可见,通过fetch可以直接查看一个网页的状态和返回的结果。但是,要从url网页提取内容,需要以下说明。
2.2.2 shell指令描述为:交互式爬行控制台(interactive crawling console),主要在调试和开发时使用。这里以抓取百度网页为例。
比如查看返回的内容,可以在交互环境下直接输入response.text,获取所请求网页的信息。
那么可以直接获取数据,如下。
2 . 2 . 3 run spider指令对应的描述是run a self-contained spider(不创建项目),翻译过来就是:不创建项目就可以独立运行一个爬虫文件(一个项目可以包含一个或多个爬虫文件)。
具体操作:首先创建一个py文件,比如在桌面上创建,命名为demo.py,然后编写如下代码(这里可以先按照下面敲。至于为什么,以后介绍项目的时候自然就明白了)
FromScrapy.spiders导入spider #需要导入这个爬虫基类。
类DemoSpider(Spider): #继承基类
Name=Demo #设置名称
Allowed_domains=[baidu.com] #在这里写域名
start _ URLs=[ 3358 www . Baidu . com ]#在这里写网址
Def parse(self,response): #定义处理函数
打印(测试.)
打印(“成功运行单个文件”)
打印(‘恭喜!)代码写好之后,保存,然后在命令行执行,如下图。注意:这里容易出错的一点是路径没有定向到py文件所在的路径,会导致运行错误(比如这里创建的demo.py文件在桌面上,需要将路径定向到桌面,然后运行指令)。
2.2.4版本及查看说明版本说明:参照当前废品的版本信息,如下
查看说明:使用Scrapy获取URL下载页面,并在浏览器中显示其内容。比如你输入如下指令,系统会调用默认浏览器,然后打开目标URL(这里以百度为例)
2.2.5 startproject指令用于创建一个爬虫项目,如何使用也可以通过-h查询首先介绍scrapy的基本工作流程,由五部分组成。具体流程见图。
1)本项目包括
引擎、调度器、下载器、蜘蛛和项目管道
2)爬行过程
对于每个URL,
调度程序-下载器-蜘蛛-
如果返回新的URL,将返回调度程序。
如果是需要保存的数据,会放入项目管道。
接下来进行实际操作。
3)操作示例
首先输入要存储代码的目录(在命令行窗口下)。
然后进入scrapy startproject教程。
检查目录结构,在指定目录下创建一个文件夹(比如自己的桌面路径C:\Users\86177\demo)。检查文件目录的结构,可以看到这个文件夹里有两个文件(一个是教程文件夹,一个是scrapy.cfg配置文件)。该文件夹的具体文件如下
Scrapy.cfg配置文件是我们的项目在互联网上发布时要设置的内容。一般不能用。大多数情况下,我们会接触到tutorial下的文件。
spiders文件夹就是刚才命令行窗口中第二个选项对应的文件存储路径,也就是运行 scrapygen spider example 时,会在spiders文件夹中创建一个爬虫模板。
初始化-。py文件是一个声明文件,表示当前创建的文件夹是一个包(这里不介绍Python的包、库、模块,可以自己了解)
Items.py文件用于存储要抓取的内容。
middlewares.py文件是你下载完东西后需要经过的一个过程(中转站)。
pipelines.py文件是项目下载后的通道。
Settings.py文件用来写scrapy项目的配置。
2.2.6 genspider指令描述为:使用预定义的模板生成新的spider,也就是你需要通过项目指令指定具体可用的模板,后面会结合本项目指令进行说明,这里不赘述。
2.3项目说明除了上面介绍的说明,还有另外两个说明(bench和settings),将在项目说明中说明。以刚刚创建的教程项目为例。进入项目文件路径后,再次调用scrapy -h指令,可以看到项目指令如下
其中,有五个项目指令:检查、爬行、编辑、列表和解析。这七条指令将与前面两条指令一起在下面详细说明。
2.3.1 bench指令bench指令可以测试本地计算机硬件的性能。使用scrapy bench指令后,系统会创建一个本地服务器,它会以最大速度爬行。它不会抓取特定的网页,而是跟踪这些网页。测试速度是每分钟可以抓取多少网页。
比如你自己的电脑最大抓取速度是每分钟5160页,你可以查看自己电脑的抓取速度。每分钟可以抓取的页面越多,计算机的性能就越好。
2.3.2爬虫模板爬虫项目文件创建完成后,你会发现蜘蛛文件夹里除了一个初始化执行文件,没有其他文件。因此,如果需要创建一个crawler文件,应该使用genspider命令。首先,检查可用的模板信息,如下所示
查看爬虫模板的说明:scrapy genspider -l (l表示列表)
第一个basic是最基本的爬虫模板,第二个crawl是自动化爬虫模板,第三个和第四个是针对csv和xml文件的。
1)基本模板
执行代码如下,其中quotes是爬虫模板的文件名,后面的quotes.toscrape.com是URL的域名,不是URL(关于URL和域名的关系)。
此时,spiders文件夹下还有一个quotes.py文件,如下所示
打开文件后,你会觉得很熟悉。是不是和之前运行单个爬虫文件差不多,就是类的名字不一样?
2)创建爬虫自动化模板时,只需将基本的after -t改为crawl,然后打开创建的爬虫文件,如下所示(自动爬行的规则更多)
3) csvfeed模板
将相应的指令修改为csvfeed,生成的爬虫模板文件为
4) xmlfeed自动化模板
与上面的操作类似,生成的模板文件如下
2.3.3检查指令用于检查爬虫文件是否能正常运行,然后输入被测爬虫文件的名称(减号。py)。
例如,以刚刚创建的四个模板为例。在第四个爬虫模板文件中,故意删除了导入模块的第一行代码,最终程序检测失败,给出了错误的详细信息。
2 . 3 . 4 list命令显示当前项目中可执行的爬虫模板文件(可执行文件表示存在,但不保证能正常运行),如下
2.3.5 crawl指令与runspider指令功能相同,也是一个运行代码文件,但这里执行的是项目中的爬虫模板文件。具体操作如下
为了可视化输出,验证程序能否正常运行,只需在这里的parse函数正下方添加output语句(四个模板都写好了),最终输出结果如下
从结果中可以看出,在没有设置任何爬虫信息的情况下,只输出print语句,可以正常运行的文件是quotes.py,其对应的模板是basic,所以最基本的模板保证了爬虫文件的可执行性,而其他三个模板需要设置相关参数才能输出最终数据。
2.3.6编辑指令该指令可以在linux系统下运行,其作用是打开一个爬虫文件,然后用编辑器进行编辑,但不能在windows系统下运行。函数描述和代码执行结果如下。
2.3.7 parse命令使用该命令指定一个crawler文件来搜索某个URL,通常是该crawler文件的URL,如下所示
其他具体参数可通过scrapypass-h找到,如下所示
2.3.8设置命令用于查看相关参数的设置。可以打开项目的settings.py文件,获取其中值对应的数据。任何没有评论的都可以获取,部分评论会被获取为无(即使评论被取消)。
其他参数可以通过刮取设置-h指令查询,如下
3.爬上报价网站。界面如下
3.1创建一个蜘蛛爬虫模板,在项目根目录下运行以下代码。下面是最简单的基本创建。如果不输入,则默认。
确认回车后,Scrapygen spider引用quotes.toscrape.com的输出如下。
此时,将在spider文件夹中自动生成以下文件
名称与创建命令行窗口时网站前面的单词名称相对应。start_urls是要抓取的网站,allowed_domains需要抓取主域名下的信息。
3.2对创建好的文件进行操作,比如在这里抓取前两页的信息。
进口废品
课堂语录Spider(scrapy。蜘蛛):
name=quotes
allowed _ domains=[ quotes . toscrape . com ]
start _ URLs=[ http://quotes . toscrape . com/page/1/,
http://quotes . toscrape . com/page/2/]
定义解析(自身,响应):
page=response . URL . split(/)[-2]
file_name=quote-{}。“html”。格式(页面)
用open(文件名, wb )作为f:
f.write(响应.正文)
Self.log (savedfile {} )。format (file _ name)) 3.3当你开始运行Scrapy时,你必须在根目录下输入下面的代码(tutorials/在上例中),否则系统会报错。
Scrapy抓取报价试图运行它。在运行之前,记得保存qutoes.py文件,也就是你刚才编辑代码的窗口文件(如果有错误,中间会提示,会有各种错误提醒)。如果没有错误,您将成功完成创建。
此时,本地会多出了两个文件夹,其中包含了我们要抓取的网站的源代码(即start_urls中包含的URL),如下
quote-1.html的初始源代码如下
3.4获取代码分析列表倒数元素的方法
page=response . URL . split(/)[-2]列表中的负数表示倒数,如下列。
你好,世界!
print(s[-2])输出结果是:D
所以从正规网站(网址)提取信息是非常简单的。
s= http://quotes . toscrape . com/page/1/
print(s . split(/)[-2])输出结果是:1
因此,页码页可以通过这种方式获得。
3.5 Python中的文件存储,open(file_name, wb )为f:
F.write(response.body)的用法如下:
用(文件名, wb )作为f:
F.write(文件内容)举个栗子:
用open(hello.txt , w )作为f:
f.write(hello world!)输出结果是:
或者如下使用:注意与上面的区别
用open(hello.txt , wb )作为f:
f.write(hello world!。encode())-)输出结果为:与上述输出相同。
注意:不同蜘蛛的名字不能相同(好理解,因为创建的时候会在蜘蛛文件夹里创建文件,一山不容二虎),里面的函数名也不能随意命名。
3.6提取数据的方法打开cmd窗口,切换到文件下载的目录(这里推荐powershell,在目标文件所在目录的空白位置同时按住shift和鼠标右键就可以打开,这样就不用再切换路径了,powershell和cmd的区别),输入
‘scrapy shell’3358quotes.tosscrap.com/page/2/will进入交互模式,如下图
比如我们想获取一个网页的标题,可以使用CSS选择器,通过response.css(title )输出。如果我们想要输出标签信息,我们需要添加。extract()方法到背面,返回的列表是一个列表。
获取标签的内容。请注意。文本不像以前那样在后面,而是在中间。
Scrapy还支持xpath进行文本提取(xpath将在爬虫项目中解释),代码执行结果如下
3.7分析网页,识别目标,调用目标页面,检查并找到相应的标签信息。
3.8实战分析此时,目标信息对应的标签位置已经确定。接下来,打开quotes.py文件并编写代码。
首先,获取页面的所有正文内容(也就是引用,里面的名言)。
Quotes=response.css(。quote )输出结果显示一个页面有10条数据,如下所示
其次,获取每个文本的文本内容、作者以及对应的标签。
对于引用中的引用:
title=quote.css(。text:text’)。提取()[0]
author=quote.css(。作者:正文)。提取()[0]
tags=quote.css(。tag:text’)。提取()
打印(标题:\n ,标题)
打印(作者:\n ,作者)
打印( tags:\n ,tags),然后保存文件。quotes.py文件中的最终代码如下
进口废品
课堂语录Spider(scrapy。蜘蛛):
name=quotes
allowed _ domains=[引号。托斯卡拉。com ]
start _ URLs=[ http://引号。托斯卡拉。com/page/1/,
http://个报价。托斯卡拉。com/page/2/]
定义解析(自身,响应):
quotes=response.css( .引用)
对于引用中的引用:
title=quote.css( .text:text’).提取()[0]
author=quote.css( .作者:正文)。提取()[0]
tags=quote.css( .tag:text) .提取()
打印(标题:\n ,标题)
打印(作者:\n ,作者)
打印(标签:\n ,标签)最后打开命令行窗口(powershell或者cmd),在根目录下也就时图塔利亚尔文件夹路径,运行scrapy项目,输入之前的命令代码,如下
杂乱的爬行引用在命令行下面输入指令
输出结果:(在全部输出内容的中间部分,和报错产生的位置是一样的)
最后的最后把获取的数据存储到本地
进口废品
课堂语录蜘蛛(搔痒症.蜘蛛):
name=quotes
allowed _ domains=[引号。托斯卡拉。com ]
start _ URLs=[ http://引号。托斯卡拉。com/page/1/,
http://个报价。托斯卡拉。com/page/2/]
定义解析(自身,响应):
页面=响应。网址。split(/)[-2]
file_name=quotes-{} . txt .格式(页面)
用打开(文件名, w )作为女:
quotes=response.css( .引用)
对于引用中的引用:
title=quote.css( .text:text’).提取()[0]
author=quote.css( .作者:正文)。提取()[0]
tags=quote.css( .tag:text) .提取()
打印(标题:\n ,标题)
打印(作者:\n ,作者)
打印(标签:\n ,标签)
f.write(标题:{}\n作者:{}\n标签:{}\n”.格式(标题、作者、标签)保存一下,然后在命令行窗口下运行指令scrapy爬行报价,最后在根目录下会生成两个。文本文件(文本文件)文件,如下
quote1.txt里面的内容就对应着网站第一页的内容,如下
至此,第一个Scrapy项目完结了
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。