scrapy爬虫框架和相关解释

一、概述
scrapy是一个用于爬取网站和提取结构化数据的应用程序框架,它的结构清晰,效果稳定,通用性强,且能够较容易的连接数据库等附加组块。可以说是很好的爬虫开发工具。

二、安装
最好用的命令:

pip install scrapy

但是,很大概率下,scrapy库的安装不会一帆风顺。你的环境不是缺这就是少那,如果你安装成功就当我没说:在这里插入图片描述
这些关键的python包,如果pip 不上,那就直接下载.whl文件吧。
如下载Twisted(下载时注意python版本和平台版本)

http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted

这一点大家可以参考这位博主的文章:

https://blog.csdn.net/abebetter/article/details/74626486

三、通用框架

先放工作流程图:

使用scrapy命令建立的爬虫会自动生成如下图所示的文件结构:
命令是啥呢?就在相应位置cmd输入以下命令即可:后面的tutorial是爬虫的名字,注意不要有中文呦!
scrapy startproject tutorial
在这里插入图片描述
下面一一解读:
1.spider文件夹:
这里是对具体网页的解析,获取到想要的数据,比如xpath,css选择器,re正则匹配,或BeautifulSoup也是可以的。
2.items:
对数据进行格式的规整,Field 对象用于为每个字段指定元数据(metadata)。你可以理解为这创建了一种数据模型,它规定了数据实体的结构。(有点像字典是吧,其实本质是一样的)

import scrapy

class Product(scrapy.Item):
    name = scrapy.Field()
    price = scrapy.Field()
    stock = scrapy.Field()

具体使用时就是这样的:

result=Product()
result['name']=xxx
result['price']=xxx

3.middlewares(中间组件):
我能说这一部分在一些情况下,动都不用动吗!
但是,当你需要对ip,agent进行设置时,就在这里进行更改就行了。
在这里插入图片描述新建一个middlewares文件夹,里面写入ip代理,agent的相关函数或方法等。
4.pipelines:
项目管道(Pipeline) 负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。这已经很明白了,就是已经拿到我想要的数据了,但是会不会有重复的、有不和格式的,我要不要筛选一下,最后写到数据库里面。
5.setting:
规定多pipeline的函数执行顺序,规定爬取网页的形式,缓冲时间,是否遵守robot协议等等。这里好多东西是不需要更改的,但是每改一个对整个爬虫的影响都是很大的。
推荐一篇博文,很详细哦:

https://blog.csdn.net/caijin1217/article/details/82493178

四,执行过程:
这里有一个很形象的对话,他能解释scrapy框架如何执行的:

1.引擎:Hi!Spider, 你要处理哪一个网站?

2.Spider:老大要我处理xxxx.com

3.引擎:你把第一个需要处理的URL给我吧。

4.Spider:给你,第一个URL是xxxxxxx.com

5.引擎:Hi!调度器,我这有request请求你帮我排序入队一下。

6.调度器:好的,正在处理你等一下。

7.引擎:Hi!调度器,把你处理好的request请求给我。

8.调度器:给你,这是我处理好的request

9.引擎:Hi!下载器,你按照老大的下载中间件的设置帮我下载一下这个request请求

10.下载器:好的!给你,这是下载好的东西。(如果失败:sorry,这个request下载失败了。然后引擎告诉调度器,这个request下载失败了,你记录一下,我们待会儿再下载)

11.引擎:Hi!Spider,这是下载好的东西,并且已经按照老大的下载中间件处理过了,你自己处理一下(注意!这儿responses默认是交给def
parse()这个函数处理的)

12.Spider:(处理完毕数据之后对于需要跟进的URL),Hi!引擎,我这里有两个结果,这个是我需要跟进的URL,还有这个是我获取到的Item数据。

13.引擎:Hi !管道 我这儿有个item你帮我处理一下!调度器!这是需要跟进URL你帮我处理下。然后从第四步开始循环,直到获取完老大需要全部信息。
14.管道“调度器:好的,现在就做!

***最后是官方说明文档:(用前必看)
scrapy的官方中文文档:https://oner-wv.gitbooks.io/scrapy_zh/content/
一些基础的实例代码:
链接:https://pan.baidu.com/s/1-trLG5TEe35BtDoe_jU7og
提取码:t9m5

发布了9 篇原创文章 · 获赞 4 · 访问量 1920

猜你喜欢

转载自blog.csdn.net/weixin_43038752/article/details/90547873