python爬虫scrapy框架之增量式爬虫的示例代码

 更新时间:2021年02月26日 14:58:11   作者:Aacheng123  
这篇文章主要介绍了python爬虫scrapy框架之增量式爬虫的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

scrapy框架之增量式爬虫

一 、增量式爬虫

什么时候使用增量式爬虫:
增量式爬虫:需求 当我们浏览一些网站会发现,某些网站定时的会在原有的基础上更新一些新的数据。如一些电影网站会实时更新最近热门的电影。那么,当我们在爬虫的过程中遇到这些情况时,我们是不是应该定期的更新程序以爬取到更新的新数据?那么,增量式爬虫就可以帮助我们来实现

二 、增量式爬虫

概念:
通过爬虫程序检测某网站数据更新的情况,这样就能爬取到该网站更新出来的数据

如何进行增量式爬取工作:
在发送请求之前判断这个URL之前是不是爬取过
在解析内容之后判断该内容之前是否爬取过
在写入存储介质时判断内容是不是在该介质中

增量式的核心是 去重
去重的方法:
将爬取过程中产生的URL进行存储,存入到redis中的set中,当下次再爬取的时候,对在存储的URL中的set中进行判断,如果URL存在则不发起请求,否则 就发起请求
对爬取到的网站内容进行唯一的标识,然后将该唯一标识存储到redis的set中,当下次再爬取数据的时候,在进行持久化存储之前,要判断该数据的唯一标识在不在redis中的set中,如果在,则不在进行存储,否则就存储该内容

三、示例

爬虫文件

# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from redis import Redis
from increment2_Pro.items import Increment2ProItem
import hashlib
class QiubaiSpider(CrawlSpider):
  name = 'qiubai'
  # allowed_domains = ['www.xxx.com']
  start_urls = ['https://www.qiushibaike.com/text/']

  rules = (
    Rule(LinkExtractor(allow=r'/text/page/\d+/'), callback='parse_item', follow=True),
  )

  def parse_item(self, response):

    div_list = response.xpath('//div[@class="article block untagged mb15 typs_hot"]')
    conn = Redis(host='127.0.0.1',port=6379)
    for div in div_list:
      item = Increment2ProItem()
      item['content'] = div.xpath('.//div[@class="content"]/span//text()').extract()
      item['content'] = ''.join(item['content'])
      item['author'] = div.xpath('./div/a[2]/h2/text() | ./div[1]/span[2]/h2/text()').extract_first()
      
			# 将当前爬取的数据做哈希唯一标识(数据指纹)
      sourse = item['content']+item['author']
      hashvalue = hashlib.sha256(sourse.encode()).hexdigest()

      ex = conn.sadd('qiubai_hash',hashvalue)
      if ex == 1:
        yield item
      else:
        print('没有可更新的数据可爬取')


    # item = {}
    #item['domain_id'] = response.xpath('//input[@id="sid"]/@value').get()
    #item['name'] = response.xpath('//div[@id="name"]').get()
    #item['description'] = response.xpath('//div[@id="description"]').get()
    # return item

管道文件(管道文件也可以不用加)

from redis import Redis
class Increment2ProPipeline(object):
  conn = None
  def open_spider(self,spider):
    self.conn = Redis(host='127.0.0.1',port=6379)
  def process_item(self, item, spider):
    dic = {
      'author':item['author'],
      'content':item['content']
    }
    self.conn.lpush('qiubaiData',dic)
    print('爬取到一条数据,正在入库......')
    return item

到此这篇关于python爬虫之scrapy框架之增量式爬虫的示例代码的文章就介绍到这了,更多相关scrapy增量式爬虫内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形

    PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形

    这篇文章主要介绍了PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • Python实现CART决策树算法及详细注释

    Python实现CART决策树算法及详细注释

    CART算法是一种树构建算法,既可以用于分类任务,又可以用于回归,本文仅讨论基本的CART分类决策树构建,不讨论回归树和剪枝等问题,感兴趣的朋友跟随小编一起看看吧
    2021-10-10
  • 解决Numpy报错:ImportError: numpy.core.multiarray failed

    解决Numpy报错:ImportError: numpy.core.multiarray faile

    这篇文章主要介绍了解决Numpy报错:ImportError: numpy.core.multiarray failed问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Python 注释:解释和优化代码可读性

    Python 注释:解释和优化代码可读性

    本文将探讨Python中注释的重要性,以及如何通过注释解释和优化代码的可读性,了解如何正确使用注释可以提高代码的可维护性和可理解性
    2023-09-09
  • Matplotlib自定义坐标轴刻度的实现示例

    Matplotlib自定义坐标轴刻度的实现示例

    这篇文章主要介绍了Matplotlib自定义坐标轴刻度的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • 使用python脚本检查ssl证书到期时间

    使用python脚本检查ssl证书到期时间

    这篇文章主要为大家介绍了使用python脚本检查ssl证书到期时间,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • PyTorch使用自动微分模块的方法和理解

    PyTorch使用自动微分模块的方法和理解

    自动微分模块Autograd为张量增加了自动求导功能,是神经网络训练不可或缺的组成部分,通过backward方法和grad属性,实现梯度的计算和访问,本小节主要讲解了 PyTorch 中非常重要的自动微分模块的使用和理解,感兴趣的朋友一起看看吧
    2024-09-09
  • python 算法 排序实现快速排序

    python 算法 排序实现快速排序

    主要分为两个子算法,PARTITION(A, p, r)以A[r]为基准对数组进行一个划分,比A[r]小的放在左边,比A[r]大的放在右边
    2012-06-06
  • 解决plt.savefig()和plt.show()方法得到的图片不一样问题

    解决plt.savefig()和plt.show()方法得到的图片不一样问题

    这篇文章主要介绍了解决plt.savefig()和plt.show()方法得到的图片不一样问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 妙用itchat! python实现久坐提醒功能

    妙用itchat! python实现久坐提醒功能

    python编写的久坐提醒,给最爱的那个她,这篇文章主要为大家分享了python久坐提醒功能的实现代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11

最新评论