zoukankan      html  css  js  c++  java
  • 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框架

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    html 页面打印元素被切割,元素自适应分页
    linux jupyter 安装
    == 与 equals()的区别
    多段图
    数据仓库和ODS 的并行
    Linux下对sh文件的基本操作总结
    linux tr命令详解
    数据仓库分层
    利用SQOOP将数据从数据库导入到HDFS(并行导入,增量导入)
    Etl之HiveSql调优(left join where的位置)
  • 原文地址:https://www.cnblogs.com/yinminbo/p/11824330.html
Copyright © 2011-2022 走看看