scrapy爬虫框架和相关解释

    xiaoxiao2023-10-28  154

    一、概述 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

    最新回复(0)