zoukankan      html  css  js  c++  java
  • 增量式爬虫

     啥是增量式爬虫?

      增量式爬虫就是爬取那些更新频率很快的网站,但是我们又不想每次都删库再建库,所以有了增量式爬虫。效果是将爬虫内容在数据库中进行判断,如果不存在则存入,存在则不存入的一个爬虫。

    我们用什么数据库?

      在这里我使用的是redis数据库,因为增量式爬虫的最主要核心就是去重,而redis中有set方法,用于去重很方便。

    判断网站中的内容是否存储过的方法?

      我将网站的内容分为两种,一种是内容少的,一种是内容多的。

      内容少的就直接将数据存储到redis数据库中,然后通过数据库的查询判断一下。

      # 创建连接对象

      conn = Redis(host='127.0.0.1',port=6379)

      # 向redis数据库里面添加内容,如果返回的是1,则没有存储过内容,将爬取的内容存到数据库,如果返回的是0,则证明存储过内容,这样直接pass

      ex = conn.sadd(key,value)

      if ex == 1:

        # 发请求,获取详情页面数据

        yield scrapy.Request(url=url,callback=slef.函数名)

      else:

        pass

      内容多的就可以通过将内容进行hashlib进行唯一加密,生成数据指纹,然后判断加密内容与数据库中的内容是否一致

      # 导包

      import hashlib

      # 自己定制一种形式的数据指纹

      source = '所有数据进行内容拼接'

      # 进行hash加密

      hashValue = hashlib.sha256(source.encode()).hexdigest()

      # 然后向数据库里面存储

      ex = conn.sadd(key,hashValue)

      # 进行判断

      if ex == 1:

        # 发请求,获取详情页面数据

        yield scrapy.Request(url=url,callback=slef.函数名)

      else:

        pass

    这样就可以完成增量式爬虫的实现过程,增量式爬虫的最主要核心就是去重,解决去重方式即可,方法很多,这里只是一种方式,但是比较简单省事。

  • 相关阅读:
    数据系统与分布式(二) 分布式数据系统(复制与分片)
    数据系统和分布式(一)数据系统基础
    可执行文件(ELF)的装载与进程
    HTTPS协议
    后台开发 缓存, 数据库, 高并发等等
    Golang中new和make的区别
    吴恩达:机器学习里面的作业1遇到的
    笔记——操作系统导论:环境配置
    笔记——操作系统导论:第二章
    Games 101 作业1代码解析
  • 原文地址:https://www.cnblogs.com/ifiwant/p/11756918.html
Copyright © 2011-2022 走看看