文章目录

  • 为什么要存原始数据
  • 保存原始数据是提高数据质量的前提
  • 原始数据存储方案
  • 题外话
  • 小结

为什么要存原始数据

在实现一个生产环境可用的网络爬虫时,有一个问题几乎是无法绕过的,那就是网页原始数据的存储。

在比较简单的使用场景下,是不需要考虑如何保存原始网页的。例如,用户只想要某个网站的数据,而且只要达到某个数据量就可以了。如果在处理某个特殊页面时发生了异常,直接跳过这个页面也是可以接受的。

但是,一旦用户有数据质量的要求,就需要更加严肃而且完整的技术方案。在这些技术方案中,原始数据的存储和交换,都是必选项。也许有人认为,原始网页保存在网站那里就好了,需要的时候再去采集就好了。这个时候,就需要和用户沟通需求,如果用户认可,那就可以这么做。但根据个人的项目经验,把数据搜集全,是很刚性的需求,不太容易商量。

以易用性作为卖点的爬虫框架,会让使用者产生一些对于数据搜集技术的误解,因为他们屏蔽了太多技术细节。使用者只看到了基本流程:1、下载网页;2、抽取所需的数据;3、然后把这些抽取数据保存下来。却忽略了数据质量的需求。

为了实现较高的数据质量,就必须投入额外的成本,有时候这个成本会很高,但同时也就意味着高质量数据服务更值钱

保存原始数据是提高数据质量的前提

简单说两个理由:

一、保存原始数据可以在网站改版的时候,保证数据不丢失,只要修改抽取规则,对原始网页重新处理即可。
二、原始数据是网页信息抽取模块的输入,原始数据可以让研发迭代信息抽取算法,优化用户使用体验。

原始数据存储方案

既然原始数据如此重要,我们需要怎么存储呢?

有这样一些技术方案,大致可以分为文件系统和数据库两大类,具体如下:

一、单机文件系统。

  • 优点:简单。
  • 缺点:无法支撑大规模应用,数据可靠性无法保障。

二、用分布式文件系统。

  • 优点:解决了文件存储容量和扩展问题。
  • 缺点:要选择分布式文件系统,有额外的成本。

三、把网页保存到关系数据库。

  • 优点:可以存关联的信息,也方便访问。
  • 缺点:大规模存储和归档都不好做,需要投入维护或者购买成本。

四、把网页保存到NoSQL,比如HBase、ES等。

  • 优点:可以存关联的信息,也方便扩展。
  • 缺点:要购买或维护NoSQL集群。

五、用对象存储。

  • 优点:接口简单易用。
  • 缺点:要购买或维护对象存储集群。

上面的存储方案,需要根据项目的具体情况进行选择。如果项目中已经使用了某些存储系统,就尽量复用。

在使用文件系统存储原始数据时,最好保存WARC格式的文件,而不是HTML文件。

题外话

在真实项目中,很难用一种存储技术支撑用户的多种使用场景。一般搜索会选择Solr或者Elasticsearch;图片和视频数据会选择分布式文件系统或者对象存储;原始网页一般会选择HBase或者MongoDB;原始数据归档会选择大文件。

小结

原始网页数据的存储是很重要的,需要根据用户需求和项目情况,选择合适的技术方案。

简单爬虫设计(六)——原始网页数据存储方案选择相关推荐

  1. 《Python网络爬虫——从入门到实践》第六章将数据存储至MySQL数据库的学习心得与总结(出错与纠正方法)

    <Python网络爬虫--从入门到实践>第六章将数据存储至MySQL数据库的学习心得与总结(出错与纠正方法) 作为刚开始入门python的小白,对大数据,网络爬虫比较感兴趣.完全是自我修炼 ...

  2. python爬网页数据用什么_初学者如何用“python爬虫”技术抓取网页数据?

    原标题:初学者如何用"python爬虫"技术抓取网页数据? 在当今社会,互联网上充斥着许多有用的数据.我们只需要耐心观察并添加一些技术手段即可获得大量有价值的数据.而这里的&quo ...

  3. Android Learning:数据存储方案归纳与总结

    前言 最近在学习<第一行android代码>和<疯狂android讲义>,我的感触是Android应用的本质其实就是数据的处理,包括数据的接收,存储,处理以及显示,我想针对这几 ...

  4. HBase实战 | 从MySQL到HBase:数据存储方案转型的演进

    作者介绍 杨宏志,知乎首页架构负责人,主要负责首页工程化建设.工程架构优化.性能提升等工作.知乎专栏:https://zhuanlan.zhihu.com/c_195355141 本文转载自dbapl ...

  5. tinyFlash:一种超轻量级的嵌入式单片机flash KV 数据存储方案

    tinyFlash 一种超轻量级的flash KV数据存储方案 Github 地址:https://github.com/ospanic/tinyFlash 设计原理 本方案采用两个扇区轮流使用的方法 ...

  6. 分布式医疗大数据存储方案研究综述

    摘要 医疗数据属于大数据的一种,具有数据量大.增长迅速.多模态.高价值.重隐私等特点.针对医疗数据特点,如何对其进行统一.高效的组织管理是目前重要的研究方向.为此,通过阐述医疗数据特点,分析其存储需求 ...

  7. 服务端指南 数据存储篇 | 选择合适的数据存储方案

    在服务端会经常遇到数据存储的选型问题,是选择使用关系型数据库 MySQL,还是选择内存数据库 Redis,还是选择文档数据库 MongoDB,还是选择列族数据库 HBase, 还是选择全文搜索引擎 E ...

  8. 选择合适的数据存储方案

    在服务端会经常遇到数据存储的选型问题,是选择使用关系型数据库 MySQL,还是选择内存数据库 Redis,还是选择文档数据库 MongoDB,还是选择列族数据库 HBase, 还是选择全文搜索引擎 E ...

  9. 从MySQL到HBase:数据存储方案转型的演进

    一.集群化方案 1.MySQL应用的演化 MySQL与HBase说到最核心的点,是一种数据存储方案.方案本身没有对错.没有好坏,只有合适与否.相信多数公司都与MySQL有着不解之缘,部分学校的课程甚至 ...

最新文章

  1. 要写好业务代码,也没这么简单!
  2. 【UVALive 4642】Malfatti Circles(圆,二分)
  3. 读博无门就业碰壁,孤独当了7个月“民科”后,我的论文中了顶会
  4. Cisco/H3C交换机配置与管理完全手册(第2版)卓越网正式到货
  5. [小技巧][JAVA][转换]List, Integer[], int[]的相互转换
  6. java 字符串转成图片_java 转换图片为字符串,将字符串转换成图片显示
  7. 51Nod-1004 n^n的末位数字【快速模幂】
  8. contact form 7如何设置placeholder让提示文字显示在输入框中
  9. 计算机考研复试之操作系统
  10. 关于使用itextpdf生成pdf的页面横向和竖向
  11. Debian之CA认证
  12. Selenium_获取相对坐标
  13. Mysql常用的sql语句大全
  14. Unity 一键给所有按钮添加按钮音效
  15. 用投资思维做好招商工作:湘商回归,长沙急企业之所急
  16. 前端|css制作信封之路
  17. MySQL DBA的必备参考,两位数据库资深专家呕心沥血之作
  18. 目标跟踪:相关滤波算法MOSSE理解与python实现
  19. Qt QTabWidget详解
  20. html如何换成word,html怎么换成Word文档

热门文章

  1. 女孩,为何轻信陌生男人
  2. Js slice和 splice 数组详解操作整理
  3. 利用论坛进行网站优化推广
  4. 5w每秒的高并发优化:电商秒杀与抢购
  5. REST接口返回数据封装--工具类
  6. 软件架构师-历年论文要点-2013+2018
  7. git 恢复误删文件
  8. ArcEngine符号化——点符号选择器
  9. 命令行启动nginx、停止nginx 、重启nginx详细教程
  10. Android_(游戏)打飞机01:前言