Python Scrapy爬虫(上)

Python Scrapy爬虫

预备知识:

1、Scrapy框架是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架。

2、Scrapy去重原理:Scrapy本身自带有一个中间件。scrapy源码中可以找到一个dupefilters.py去重器需要将dont_filter设置为False开启去重,默认是True没有开启去重

3、指纹去重对于每一个URL的请求,调度器都会根据请求得相关信息加密得到一个指纹信息,并且将该URL的指纹信息和set()集合中的指纹信息进行比对。如果set()集合中已经存在这个数据,就不在将这个Request放入队列中,如果set()集合中没有存在这个加密后的数据,就将这个Request对象放入队列中,等待被调度

4、Scrapy框架下各个模块:

  • Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等

  • Scheduler(调度器): 假设其为一个URL的优先队列,由其来决定下一个要抓取的网址是什么,同时去除重复的网址。用户可以自己的需求定制调度器

  • Downloader(下载器):用于高速地下载网络上的资源。Scrapy的下载器代码不会太复杂,但效率高,主要的原因是Scrapy下载器是建立在twisted这个高效的异步模型上

  • Spider(爬虫):用户定制自己的爬虫,用于从特定的网页中提取需要的信息,即所谓的实体(Item)。 用户也可以从中提取出链接(URL),让Scrapy继续抓取下一个页面

  • Item Pipeline(实体管道):用于处理爬虫提取的实体。主要的功能是持久化实体验证实体的有效性清除不需要的信息

  • Downloader Middlewares(下载中间件/有User_Agent、Proxy代理):可以当作是一个可以自定义扩展下载功能的组件

  • Spider Middlewares(Spider中间件):可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)

图-1 scrapy框架

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2019-12-08 04:57  石斛  阅读(183)  评论(0编辑  收藏  举报