dataObject可以去重吗java_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增量式爬虫内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

Original: https://blog.csdn.net/weixin_39626162/article/details/114861206
Author: weixin_39626162
Title: dataObject可以去重吗java_python爬虫scrapy框架之增量式爬虫的示例代码

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/792929/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Python数据分析-pandas基础-2-DataFrame基础操作

    1.基础索引方式 import pandas as pd df=pd.DataFrame({‘col1′:[1,2,3,4,5],’col2’:[6,7,8,9,0]}) df &…

    Python 2023年8月19日
    043
  • 基于Python+Open CV的手势识别算法设计

    素材资料下载: 1. 课题背景及分析 2. 算法设计 3. 算法实现与调试 4. 实验结果及分析 5. 今后研究及改进计划 6. 设计总结 7. 主要参考书目 8. 附件 1.1 …

    Python 2023年10月27日
    061
  • python获取对象属性的几种方法

    当我们拿到一个对象的引用时,如何知道这个对象是什么类型、有哪些方法呢? 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()判断: >>&gt…

    Python 2023年11月1日
    041
  • Flask 数据库迁移(详解)

    1、使用 Flask-Migrate 实现数据库迁移 在开发过程中,随着需求的变化,有可能需要添加或修改表的一些字段,但是原表中的数据不能删除,此时就需要创建新表,并将旧表中的数据…

    Python 2023年8月9日
    062
  • Python | Python语法基础

    为什么想起学Python了? 之所以想起学学Python是有三个缘由。从时间顺序上看,首先是在10月中旬,笔者去学校招聘会走了走,发现招Python开发的挺多的,有在线教育、智慧城…

    Python 2023年5月25日
    071
  • 分分钟开发一个网站——Python Django快速教程

    一、开发环境配置 1、python安装 官网下载安装 https://www.python.org 版本 3.10.4 环境变量配置 系统变量-path 添加: D:\soft\p…

    Python 2023年8月3日
    059
  • python-matplotlib绘图 -应用subplots_adjust()方法解决图表与画布的间距问题

    python-matplotlib绘图 -应用subplots_adjust()方法调整图表、画布间距 文章目录 1.问题情境 2. plt.subplots_adjust()概述…

    Python 2023年8月30日
    047
  • Tensor的创建

    要使用conda 创建_一个名为”_tensor_flow”的环境,你可以按照以下步骤进行操作: 1. 首先,以管理员模式打开Anaconda Prompt…

    Python 2023年8月29日
    042
  • 科技云报道:ChatGPT要和搜索引擎抢饭碗?

    科技云报道原创。 近日,据The Information报道,两位知情人士透露,微软正准备推出新版本必应搜索引擎,使用聊天机器人ChatGPT背后的人工智能来回答一些搜索查询,而非…

    Python 2023年11月3日
    044
  • 如何用python搭建神经网络,python画神经网络结构图

    1、怎样用python构建一个卷积神经网络模型 上周末利用python简单实现了一个卷积神经网络,只包含一个卷积层和一个maxpooling层,pooling层后面的多层神经网络采…

    Python 2023年8月26日
    096
  • AI识万物:从0搭建和部署手语识别系统 ⛵

    💡 作者:韩信子@ShowMeAI📘 深度学习实战系列:https://www.showmeai.tech/tutorials/42📘 计算机视觉实战系列: https://www…

    Python 2023年9月28日
    051
  • 从零教你使用MindStudio进行Pytorch离线推理全流程

    摘要:MindStudio的是一套基于华为自研昇腾AI处理器开发的AI全栈开发工具平台,该IDE上功能很多,涵盖面广,可以进行包括网络模型训练、移植、应用开发、推理运行及自定义算子…

    Python 2023年10月28日
    033
  • Python变量

    一,变量的组成 变量的组成分为变量名、变量值和内存地址。为了理解变量的含义,我们可以举一个更具体的例子:变量是快递箱,变量名是箱的名称。它可以根据框中的内容来命名,框中的内容是变量…

    Python 2023年5月24日
    064
  • 30 岁转行做程序员,晚了吗?

    2019年,我从某大型国有企业正式辞职,告别了工作了6年的北锤小城。这时候,鄙人年芳30,曾经一批来这里奋斗的同事们,要么走上管理岗位、要么成家立业买房买车,他们是打算把一生奉献给…

    Python 2023年9月27日
    050
  • scrapy 大规模 mysql_SEO记录Scrapy的一些坑!

    最近曾庆平在搞一套抓自媒体的增量爬虫,包含UC、头条、百家、企鹅、搜狐、微信…..还有一些港台媒体,每天凌晨自动抓前一天的内容 规模较大,需求是最低成本的解决爬虫自动化…

    Python 2023年10月6日
    051
  • 爬虫基础知识+Scrapy框架

    爬虫 URI和URL的概念 requests * 1.指定URL 2.进行URL伪装 3.请求参数处理 4.发送请求 5.获取响应数据 6.持久化存储 7.数据解析 –…

    Python 2023年10月2日
    056
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球