版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.1离散数据获取方法离线数据获取方法概述离线数据的种类和来源内部信息包括各种业务数据和各类文档数据,企业使用关系型数据库MySQL和Oracle等来存储数据。外部信息包括各类法律法规、市场信息、来自客户端的数据,企业通常使用非关系型数据库存储这些数据。企业的内部信息企业的外部信息离线数据获取方法概述离线数据来源广泛、数据量庞大,需要进行一系列的清洗筛选工作,这个过程就是ETL过程,使用的工具就是ETL工具,经过净化后的数据被加载到数据仓库中,便于后续提取分析。数据仓库在计算机系统中存在着两类的数据处理工作,分别是联机事务处理(OLTP)和联机分析处理(OLAP),这两种数据处理工作之间的差异,使得传统的数据库技术无法同时满足这两类数据的处理要求,因此数据仓库技术应运而生。联机事务处理联机分析处理定义指对数据库联机的日常操作,通常是对一个或一组记录的查询和修改指对数据的查询和分析操作,通常是对海量的历史数据进行查询和分析应用场景例如火车售票系统、银行通存通兑系统、税务征收管理系统等例如金融风险预测预警系统、股市操盘监控系统、证券违规分析系统等数据处理类型操作型数据处理分析型数据处理用途用于企业的日常事务处理工作用于企业的管理工作特点对数据的安全性、完整性、事务的一致性、事务吞吐量、数据的备份和恢复等要求很高要访问的数据量非常大,所以需要做的查询和分析的操作也十分复杂数据仓库数据仓库是作为决策支持系统服务基础的分析数据库,用来存放大容量的只读数据,为制定决策提供所需的信息。数据仓库有如下四个基本特征:面向主题的主题是指用户使用数据仓库进行决策时所关心的重点领域,数据仓库中的数据是按照一定的主题进行组织的。相对稳定的数据仓库的数据主要用于决策分析,数据进入数据仓库以后,基本会被长期保留,通常只需要定期的加载、刷新。随时间变化的
数据仓库大多关注的是历史数据,其中很多数据是批量载入的,即定期接收新的数据内容,这使得数据仓库中的数据总是拥有时间维度。集成的
数据仓库中的数据是对原有分散的数据库数据在抽取、清理的基础上经过系统加工、汇总和整理得到的。数据仓库系统数据仓库系统以数据仓库为核心,如图所示,其体系结构分为数据源层、数据存储与管理层、OLAP服务器层和前端分析工具层。数据从数据源到最终呈现给用户的分析结果,中间过程有:1、抽取源数据并对其转换、清洗;2、建立数据仓库;3、针对分析主题建立数据集市;4、针对业务进行数据挖掘,前端展现。外部数据业务数据文档资料元数据数据仓库数据集市OLAP服务数据挖掘数据分析数据报表数据源数据存储与管理抽取工具OLAP服务器前端分析工具数据仓库系统数据集市是从数据仓库中划分出来的,是针对某一方面的数据而设计的数据仓库,可以看作数据仓库的某个子集。数据仓库与数据集市的区别:数据仓库数据集市体量企业级,规模较大部门级,规模较小开发周期开发周期短、速度快开发周期长、速度慢数据结构规范化模式星型模式数据粒度细粗数据库连接技术技术主要特点ODBC即开放式数据库互连(OpenDatabaseConnectivity),核心是SQL语句,客户可以使用ODBC从底层设置和访问数据库,缺点是无法应用于非关系型数据库JDBC即JAVA数据库连接(JavaDataBaseConnectivity),具有良好的可移植性。JDBC的缺点是数据源比较难更改,因为其结构中包含了不同厂家的产品,而且使用JDBC访问数据记录受限OLEDB即数据库链接和嵌入对象(ObjectLinkingandEmbeddingDataBase),是一种基于COM思想的、面向对象的技术标准,为用户访问各种数据源提供了一种统一的数据访问接口ADO即ActiveX数据对象(ActiveXDataObjects),是一种基于COM的数据库应用程序接口。基于OLEDB之上的访问接口,继承了OLEDB的优点DAO即数据库访问对象(DataAccessObject),支持多种类型的数据访问,可以访问从文本文件到大型后台数据库等多种格式的数据。DAO最鲜明特点就是针对MICROSOFTJET数据库的操作非常方便Hibernate即开放源代码的对象关系映射框架,是一种基于JDBC的开源的持久化框架,优势是消除了代码的映射规则,大大提高了编程的简易性和可读性,但是性能较差,大型互联网系统往往需要优化SQL,Hibernate无法根据不同的条件组装不同的SQL数据库图形界面操作工具技术主要特点DBeaver免费且开源,虽然免费,但功能强大,基于JAVA,采用Eclipse框架开发,可以连接诸如MySQL、Oracle、HBase等目前各种流行的数据库,缺点是其驱动程序需要手动添加NavicatPremium易学易用,且界面设计简洁干净,符合直觉化的效果,用户体验良好,对新手良好。功能多样,满足各种开发人员的需求。支持通过SSH通道和HTTP通道连接数据库,支持各种格式的数据迁移SQLyog快速简洁,基于C++和MySQLAPI编程,操作界面相似于微软SQLServer,支持代码输入自动填充,支持表名过滤,快速找表,对于有许多表的情况下非常实用。但其支持的数据库不多MySQLWorkbench是一个统一的可视化开发和管理平台,是MySQL官方提供的工具,功能强大,可跨平台操作,且开源免费。它包含了ER模型,可以用于创建复杂的数据建模phpMyAdmin基于PHP,架构方式是Web-BaseWeb,用户可以使用web接口管理MySQL数据库,在处理大量资料的汇入及汇出更为方便。phpMyAdmin的一大优势是:由于phpMyAdmin和其他PHP程式一样可以在网页服务器上执行,所以允许用户可以像使用PHP程式产生网页一样远端管理数据库MySQL-Front小巧灵活,相容性很高,其内部使用了很多WindowsAPI,确保兼容未来的Windows版本,支持多种运行环境,有中文界面,可直接拖拽和复制粘贴,适合初学者。但客户端不能处理"创建存储过程/创建函数/创建视图/创建事件"数据仓库与数据库的区别比较项目传统数据库数据仓库总体特征围绕高效的事务处理展开以提供决策支持为目标存储内容以当前数据为主主要是历史,存档,归纳的数据面向用户普通的业务处理人员高级的决策管理人员功能目标面向业务操作,注重实时性面向主题,注重分析功能汇总情况原始数据,不做汇总多层次汇总,数据细节有损失数据结构数据结构化程度高,适合运算操作数据结构化程度适中视图情况视图简单,内容详细多维视图,概括性强访问特征读取/写入并重以读取为主,较少写入数据规模数据规模较小数据规模较大数据访问量每次事务处理访问数据较少每次分析处理访问大量数据响应要求要求很高的实时性对实时性要求不高ETL过程ETL过程是指任何以数据为中心的项目的集成组件。负责完成源数据向数据仓库导入的过程,是数据仓库项目中最重要的步骤,通常要占用整个项目70%的时间。ETL过程可大致描述为从一个或多个数据库中读取数据;将抽取后的数据由一种数据类型转换为另一种数据类型,以便存储在数据仓库或其他数据库中;将数据存入数据仓库中。打包应用遗留系统数据源其他数据源数据抽取数据转换数据清洗数据加载数据仓库数据集市ETL过程——数据抽取数据抽取是从不同的数据源中通过采用不同的方法抽取数据的一个过程。根据数据来源和所要抽取数据的结构类型的不同,可划分为三类数据抽取情形:1、文件型数据抽取方式:数据是非结构化数据与半结构化数据,将这些数据导入指定的数据库,再从指定的文档数据库中完成抽取。2、同构同质抽取方式:数据源与目标数据库系统同构同质,可以直接建立数据库连接,利用结构化查询语句访问,实现数据迁移。3、同构异质抽取方式:若数据源与目标数据库系统同构异质,数据源可以通过ODBC的方式建立数据库连接。ETL过程——数据转换由于从数据源中抽取得到的数据格式与目标数据格式存在不一致的情况,需要对数据进行转换,使异构的数据格式统一起来。转换过程的任务有以下三种:1、不一致数据的合并:将不同业务系统中相同类型的数据进行整合。比如同一个商品在不同的业务系统中的商品编码不同,抽取后该商品会统一转换成一个编码。2、数据粒度的转换:数据仓库中数据主要用于分析,存储的数据细化程度低,粒度较大。而业务系统中存储的数据细化程度高。因此需按照数据仓库粒度进行聚合。3、业务规则的计算:不同的业务系统有不同的数据指标,但数据指标并不能直接使用,需要在ETL中经过计算并存储到数据仓库后,以业务规则的方式供分析和使用。ETL过程——数据清洗数据清洗:指数据在加载到数据仓库之前,其中可能会掺杂一些问题数据,因此数据清洗是一个必要且不断反复的过程。使用ETL工具实现数据清洗的三种主要方式如下:1、实现数据表属性一致化,对于不同表的属性名,根据其含义重新定义其在数据库中的名字,并以转换规则的形式存放在数据库中。2、数据缩减,如果数据量很大,处理就非常耗时。那么可以通过数据缩减,大幅度缩小数据量,以提高后续数据处理的效率。3、通过预先设定数据处理的可视化功能结点,以可视化的方式快速有效地完成数据清洗和数据转换过程。ETL过程——数据加载数据加载是将经过转换和清洗后的数据加载到目标数据仓库中。当目标数据仓库为关系数据库时,主要有两种加载方式:通过SQL语句直接进行插入(insert)、删除(delete)和更新(update)操作。另一种是采用批量加载的方法,在装入大量数据时效率较高。具体使用哪种数据加载方式要取决于所执行操作的类型和需要装入数据量的多少以及业务系统的需要。ETL工具ETL工具:在获取并向数据仓库加载数据量、种类多的数据时,需使用的专业的数据抽取、转换和加载工具的一种统称。ETL工具——DataXDataX是阿里巴巴集团内被广泛使用的离线数据同步工具,可以实现包括MySQL、SQLServer、Oracle、Hive、HBase等各种异构数据源之间高效的数据同步功能。DataX作为离线数据同步工具,尤其是当其数据量很大或表非常多时,适合使用DataX实现快速迁移。DataX有较为全面的插件体系,主流的RDBMS、NOSQL、大数据计算系统等都已接入。ETL工具——DataXDataX的组成结构:1、Job模块:DataX完成单个数据同步的作业,称之为Job。Job模块是单个作业的中枢管理节点,承担了数据清理、子任务切分等功能。2、Task模块:Task模块是DataX作业的最小单元。Job模块将单个作业切分成多个小的Task,以便于并发执行,每一个子Task都负责一部分数据的同步工作。3、TaskGroup模块:再切分成多个子Task之后,Job模块将调用调度器(Scheduler),根据配置的并发数据量,将拆分成的Task进行重新组合,组装成为TaskGroup模块。4、Storage模块:Reader和Writer插件通过Storage模块交换数据。ETL工具——InformaticaPowerCenterInformaticaPowerCenter简称Infa,是Informatica公司开发的世界级的企业数据集成平台,支持各种数据源的数据抽取、转换、加载。Infa能够方便地从异构数据源中抽取数据,用来建立、部署、管理企业的数据仓库。企业通过Infa在业务数据和数据仓库间进行ETL操作。ETL工具——InformaticaPowerCenterInformaticaPowerCenter架构主要由客户端(Informatica)组件和服务端(PowerCenter)组件构成。Informatica包括五个组件:设计者(Designer);工作流管理员(WorkflowManager);工作流监控者(WorkflowMonitor);知识库管理员(RepositoryManager);管理控制台(AdministratorConsole)。PowerCenter包括三个组件:信息服务(InformaticaService)集成服务(IntegrationService)知识库服务(RepositoryService)ETL工具——KettleKettle是由Java语言开发编写的一种ETL工具。Kettle在做数据抽取、质量检测、数据清洗、数据转换、数据过滤等方面有比较高效稳定的表现,还可用于数据库间的数据迁移。Kettle的组成结构:1)工具:Spoon、Pan、Kitchen、Carte四个工具;2)转换:负责抽取、转换、加载各阶段的数据;3)作业:用于完成整个工作流的控制;4)数据库连接:连接2)和3)到关系型数据库上;5)资源库:数据库Pentaho资源库和文件资源库。(原Kettle)ETL工具——其他ETL工具1、DataStage:IBM公司开发,使用了Client-Server架构,提供了一个图形化的开发环境,所见即所得方式设计ETL全过程。2、Talend:拓蓝公司开发,可运行于Hadoop集群之间,直接生成MapReduce代码供Hadoop运行。开发环境综合性很强,提供基于EclipseRCP的图形操作界面。3、Scriptella:ElisS公司开发,可与任何JDBC/ODBC兼容的驱动程序集成,并提供与非JDBC数据源和脚本语言的互操作性的接口。小结本节的主要内容离线数据获取方法概述数据仓库ELT过程ELT工具4.1离散数据获取方法4.2实时数据获取方法实时数据获取方法概述实时数据获取方法主要应用于处理流数据的业务场景中。所谓流数据,就是将数据源执行的各种操作活动记录成为文件,且这些文件必须按指定格式进行记录。流数据web服务器上的用户访问行为web用户的财产记录网络监控的流量管理特点一:持续到达特点二:速度快特点三:规模大特点四:价值会随着时间流逝而不断降低强调“实时”,要求尽可能快地对最新的数据进行采集、分析并给出结果。不论是何种实时数据采集工具,其设计所遵循的基本框架及功能模块都大致相同。实时数据采集基本架构——架构设计实时数据采集工具的主架构基本分为数据读取器(Reader)、数据解析器(Parser)和数据发送器(Sender)三部分。由Reader、Parser、Sender等插件共同组装的业务数据采集单元称为一个运行单元(Runner),数据采集工具必须可以同时运行多个Runner,且每个Runner可以支持更新。除了这三个日志采集常规组成部分,还应该包含若干可选模块,如基于解析后的数据转换模块以及数据暂存管道等。ChannelReaderParserSenderTransformer实时数据采集基本架构——模块组成读取模块(Reader)
负责从不同数据源中读取数据。数据读取根据数据来源的不同,可大致分为三类。分别是:从文件读取、从数据存储服务端读取和从消息队列中读取。解析模块(Parser)
将数据源中读取的数据解析到对应的字段及类型,Parser将数据解析为带有Schema(具备字段名称及类型)的数据。数据转换模块(Transformer)Transformer是对Parser的补充,可以针对字段进行数据变化。数据暂存模块(Channel)经过解析和变换后的数据会进入待发送队列,Channel利用多核优势,多线程发送数据,提高数据吞吐量。数据发送模块(Sender)
将队列中的数据发送至Sender支持的各类服务,用户使用简单。具有多线程发送、错误处理与限时等待、数据压缩发送、类型转换等特点。实时数据采集工具——FlumeFlume由Apache公司开发,支持在系统中定制各类数据发送方,用于采集数据。Flume传输数据的基本单位是事件(Event),由外部数据源生成,流向最终目的地存储。Flume运行的核心是代理(Agent),Flume以Agent为最小的独立运行单位。Flume被设计为一个分布式的管道架构,相当于一个管道式的日志数据处理系统,可看作在数据源和目的地存储之间有一个Agent的网络。Flume在部署一个代理角色时,可通过代理直接采集数据,获取外部日志数据,再传输到目标存储HDFS中,如图所示。单Agent架构主要用于采集群内数据。SourceSinkChannelWebServerHDFSAgent实时数据采集工具——Flume从Flume架构的组成中,能体现出其主要具有以下四个特点:压缩加密支持复杂流传输可靠Flume级联节点之间的数据传输支持压缩加密,提升数据传输效率和安全性Flume支持扇入流和扇出流,扇入流即Source可以接收多个输入,扇出流即Sink可以将Event分流输出到多个目的地Flume使用事务性的方式保证传送事件整个过程的可靠性,意味着数据流里的Event无论是在一个Agent里还是在多个Agent之间流转,都能保证Event被成功存储起来数据过滤Flume支持第三方过滤插件调用,Flume在传输数据过程中,可以对数据简单过滤、清洗实时数据采集工具——KafkaKafka由雅虎公司开发,是一个分布式、支持分区的、多副本的、基于Zookeeper协调的分布式发布订阅消息系统,具有高水平扩展和高吞吐量。适用于日志收集、消息系统处理、用户活动跟踪、运营指标和流式处理等。Broker0Topic1/part1part2Topic2/part1Broker1Topic1/part1part2Topic2/part1Broker2Topic1/part1part2Topic2/part1Producer1Producer2Consumer1Consumer2Kafka由生产者、服务代理、消费者、分布式协调服务Zookeeper这几大构件组成,如图所示。其中Producer、Broker、Consumer都可以有多个,而引入Zookeeper可以极大地提高其扩展性。实时数据采集工具——Kafka从Kafka架构的组成中,能体现出其主要具有以下四个特点:高吞吐低延迟可扩展性持久可靠Kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒Kafka集群支持热扩展消息被持久化到本地磁盘,并且支持数据备份防止数据丢失容错性允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)高并发支持数千个客户端同时读写实时数据采集工具——ChukwaChukwa属于Apache的开源项目Hadoop系列下的一个产品。是构建在Hadoop的HDFS和Map/Reduce框架之上的,一个开源的大型分布式数据采集系统,支持Hadoop,使用Java语言。Chukwa提供了一种对大数据量日志类数据的采集、存储、分析和展示的全套解决方案和框架。Chukwa继承Hadoop的可伸缩性和鲁棒性,可以用于监控大规模(2000个以上节点,每天产生数据量在TB级别)Hadoop集群的整体运行情况,并对它们的日志进行分析。Chukwa旨在为分布式数据收集和大数据处理提供一个灵活、强大的平台,并能够与时俱进地利用更新的存储技术(如HDFS、HBase等)。实时数据采集工具——ChukwaChunkwa由Apache公司开发,从数据的产生、收集、存储、分析到展示的整个生命周期都提供了全面的支持,由适配器(Adapter)、代理(Agent)、收集器(Collector)、多路分配器(Demux)、存储系统和数据展示(HICC)组成。AgentCollectorDataHDFSDataSinkStructuredStorageMap-ReduceJobs实时数据采集工具——ScribeScribe是Facebook开源的日志采集系统,使用C/C++语言。Scribe能够从各种日志源上收集日志,存储到一个中央存储系统上,以便于进行集中统计分析处理。Scribe为日志的分布式收集、统一处理提供了一个可扩展的、高容错的方案。Scribe的架构由代理(Agent)、Scribe和中央存储系统组成中央存储系统数据日志AgentAgentAgentScribeScribe数据库HDFS实时数据采集工具——其他工具Fluentd工具Fluentd是数据采集任务的早期工具,Fluentd的可插拔架构支持各种不同种类和格式的数据源和数据输出,同时也提供了高可靠和很好的扩展性。Logstash工具Logstash是著名的开源数据栈ELK中的一个数据采集工具,用于接收、处理、转发日志,常作为日志采集工具。Telegraf和cAdvisor工具Telegraf配合Influxdb可以让用户充分了解机器各个维度的信息,cAdvisor搭配Kubernetes在处理容器资源信息时表现极佳。小结本节的主要内容实时数据获取方法概述实时数据采集基本架构实时数据采集工具4.2实时数据获取方法4.3互联网数据获取方法互联网数据获取方法概述互联网数据是指在网络空间交互过程中产生的大量数据,例如抖音、微博等社交媒体产生的数据。互联网数据获取是利用互联网搜索引擎技术对数据进行针对性、精准性的抓取,并按照一定的规则和筛选标准将数据进行归类,形成数据文件的过程。互联网数据获取方法概述获取互联网数据的流程大致如图所示:互联网数据的主要来源为网页,网页的组成涉及HTML、CSS和JavaScript这三块知识。爬虫获取并拼接重组生成URL列表,再模拟浏览器对网络服务器发出访问请求,得到原始网页,再通过网页解析技术将藏在网页里的重要的数据提取出来。这个过程中涉及到的HTTP协议、URL重组等知识本节会一一介绍。另外,使用成熟的框架和包可以帮助我们快捷的完成爬虫任务。网络服务器网络浏览器网页访问请求网页解析目标数据HTTP协议网页——网页组成网页是可以在互联网上进行信息查询的信息页,通过网页浏览器阅读。网页组成主要涉及三块知识:HTML、CSS和JavaScript。HTML是网页内容的载体,包含文字、图片、视频等。CSS样式使得网页的外观更加丰富,可以改变字体的颜色、样式,加边框等。JavaScript则是用来实现网页上的特效效果例如弹出下拉菜单、图片轮换等。网页——网页组成HTML所有网页都由HTML组成,它基本上由包裹在标签周围的纯文本组成,标签让网络浏览器知道以什么样的方式呈现文本。标签含义<html>...</html>HTML文档的开始和结束<!DOCTYPEhtml>HTML文档的注释<head>...</head>包含有关文档的元信息<body>...</body>包含文档的正文<title>...</title>指明文档的标题<h1>...</h1>指明正文中的小标题<div>...</div>代码块,通常用于对一组元素进行分组<p>...</p>表示一个段落<table>...</table>表示一个表格代码块<tr>...<tr/>表示一行<td>...</td>表示单个单元格……表示图像网页——网页组成CSSCSS(层叠样式表)是另一项关键技术。在浏览器中查看网页源代码,经常有一些HTML属性存在于许多标签中:比如“id”用于将页面唯一标识符附加到某个标签;“class”列出了一系列以空格分隔的CSS类名。=======================color:'red';background-color:#ccc;font-size:14pt;border:2pxsolidyellow;=======================CSS的语法看起来与HTML有点不同。在CSS中,样式信息被写成以冒号分隔的基于键值的语句列表,每个语句本身用分号分隔,如右所示:网页——网页组成JavaScript是一种在浏览器端实现网页与用户交互的技术。JavaScript代码嵌套在HTML网页中响应一系列的事件,当一个JavaScript函数约定响应的动作发生时,浏览器就执行对应的JavaScript代码。对于静态网页的爬取比较简单,因为html代码一旦生成,页面的内容和显示效果就基本上不会发生变化了,而动态加载的页面,其显示的内容可以随着时间、环境或者数据库操作的结果而发生改变。通常解决办法有两种:分析网页元素,找出该数据的原始网页,提交表单,用来达到爬取的目的;使用selenium组件。网页——网页访问原理如今,互联网已经融入到人们日常生活的方方面面,以至于人们很少考虑到它背后逻辑的复杂性。每当上网时,浏览器就会启动一系列网络协议,在几秒钟内就与世界各地的计算机建立连接并检索数据。一旦导航到一个网站,例如“”,网络浏览器就会执行下列这些步骤:IP地址网址输入DNS路由器发送数据包网络浏览器转换回复响应网络服务器建立联系HTTP回复网页呈现网页——搜索引擎工作原理搜索引擎是在网络文档中搜索指定关键字的程序,并返回在万维网中找到的包含关键字的所有网络文档的列表。搜索引擎在检索目标网页时的步骤为以下五步:1、爬取:从一个设定的种子链接(SeedURLs)开始,访问队列中的所有网址,并下载网页文档。2、资源库管理:管理大量的网络文档。收集每个网页文档并将网页文档的html压缩存储在资源库中。3、索引:索引中包含了每一个网站或网络文档。这为互联网搜索引擎提供了更有效的检索方式。4、查询:查询操作将会根据用户的搜索请求,在海量的资源库中接收相关的网页文档。5、排名:搜索引擎在搜集到数据后需要向用户展示最合适的结果。排序就是根据用户的需要自定义检索结果的顺序。爬虫工作原理——获取链接URL是统一资源定位符,用来定位互联网上标准资源的地址。而互联网上的每个文件都有唯一的一个的URL,爬虫需要知道URL,才能自动访问相应的页面并进行爬取。URL基本格式一般为:protocol://hostname[:port]/path/[;parameters][?query]#fragmentprotocol为传输协议,最常见的就是http。hostname为主机名,是指存放资源的服务器的域名系统(DNS)主机名或IP地址。port为端口号,各种传输协议都有默认的端口号,如http的默认端口为80。Path为路径,由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。Parameters为参数,这是用于指定特殊参数的可选项。Query表示查询,可选,用于给动态网页传递参数,可有多个参数。Fragment为信息片断,用于指定网络资源中的片断。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释。爬虫工作原理——访问网页1、HTTP现在看看HTTP请求和回复是什么样的。正如前面所介绍的,网络浏览器和网络服务器通过发送纯文本消息进行通信。客户端向服务器发送请求,服务器发送响应或回复。请求消息包含内容响应消息包含内容请求行状态代码和状态消息的状态行许多请求标头,每个标头都在自己的行上许多响应头,同样都在同一行上空行空行可选的消息正文,也可以占用多行可选的消息正文爬虫工作原理——访问网页以下代码片段显示了由网络浏览器执行的完整HTTP请求消息:=========================================================GET/HTTP/1.1Host:Connection:keep-aliveCache-Control:max-age=0Upgrade-Insecure-Requests:1User-Agent:Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/60.0.3112.90Safari/537.36Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Referer:https:///Accept-Encoding:gzip,deflateAccept-Language:en-US,en;q=0.8,nl;q=0.6<CR><LF>=========================================================1、“GET/HTTP/1.1”是请求行。它包含了浏览器需要执行的HTTP“方法”以及HTTP版本。2、请求标头,每个标头都在自己的行上。每个标头都包含一个名称(例如“Host,”),后跟一个冒号(“:”)和标头的实际值(“”)。3、“Connection:keep-alive”可以向服务器发出信号,为后续请求保持连接状态4、“User-Agent”包含一个大文本值,浏览器通过它通知服务器它是什么(Chrome),以及它正在运行的版本5、“Accept”告诉服务器浏览器更喜欢返回哪种形式的内容6、“Referer”标头告诉服务器浏览器来自哪个页面7、最后,请求消息以空白的<CR><LF>行结束爬虫工作原理——访问网页以下代码片段显示了由网络浏览器执行的完整HTTP响应消息:1、“第一行表示请求的状态结果。它列出了服务器认可的HTTP版本(“HTTP/1.1”),然后是状态代码(“200”)和状态消息(“OK”)2、”Date”为时间3、”Content-Type”为浏览器提供有关回复中包含的内容的信息,在这里,它是HTML文本,但也可能是二进制图像数据、电影数据等4、”Server”为服务器版本5、空白的<CR><LF>行6、消息正文:包含回复的实际内容。在这里,内容是HTML文本,其中包含“HelloWorld”正是这些HTML内容将被网页浏览器解析并显示在屏幕上。同样,消息正文是可选的,但由于用户希望大多数请求实际上返回一些有用的内容,所以一般来说正文部分会包含一些内容===================================HTTP/1.1200OKConnection:keep-aliveContent-Encoding:gzipContent-Type:text/html;charset=utf-8Date:Mon,28Aug201710:57:42GMTServer:Apachev1.3Vary:Accept-EncodingTransfer-Encoding:chunked<CR><LF><html><body>HelloWorld</body></html>===================================爬虫工作原理——访问网页2、常用库requests在了解HTTP的基础上,我们可以对网页内容进行访问,这里介绍一个可以便捷获取到网页的第三方库——requests。=======================importrequestsurl='/q/1010000039170079'response=requests.get(url)print(response.text)=======================requests使用起来非常简单,首先在环境中导入requests包,然后根据浏览器发出的请求类型是get()还是post(),调用requests对应的get()或post()方法即可,调用post()方法需要带上查询参数,得到的就是浏览器返回的页面信息,之后再进行下一步处理。爬虫工作原理——网页解析1、正则表达式爬取到的网页中存在着大量的无结构的文本,我们需要提取出藏在网页中的有用的数据信息。正则表达式提供了在文本中系统化分析规律的一套语法,已经在很多软件中得到广泛的应用。常用正则表达式含义普通字符所有大写A~Z和小写字母a~z、所有数字0~9、所有标点符号和一些其他符号非打印字符比如常用的“\n”会匹配到一个换行符,“\s”会匹配到一个空白字符,“\t”会匹配到一个制表符特殊字符比如“()”就标记了一个子表达式的开始和结束。“*”就代表匹配前面的子表达式零次或多次,而“+”就代表匹配前面的子表达式一次或多次限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配定位符能够将正则表达式固定到某一个位置,比如行首或行尾,比如出现在一个单词内、在一个单词的开头或者结尾爬虫工作原理——网页解析2、BeautifulSoup包BeautifulSoup主要用于解析和提取HTML字符串中的信息。带有各种HTML解析器,使用requests获取到HTML页面,之后就可以开始使用BeautifulSoup来提取有用的信息。BeautifulSoup有很多方法,例如findParent()、findParents()、findPreviousSibling()和findPreviousSiblings()等等,这些可以帮助在HTML树中导航。3、Xpath包XPath允许识别HTML和XML文档的路径和节点。找到XPath的最常见方法是借助GoogleChrome中的开发人员工具。使用Xpath可以轻松定位到想要的元素。爬虫工作原理——网络爬虫分类人们开发出了各种类型的网络爬虫。大大提高了网络爬虫的性能和下载速度。聚焦爬虫:又称主题网络爬虫,从互联网返回给定主题的相关网页。重点抓取分析感兴趣的主题,以找到可能与抓取最相关的网络文档的URL。增量爬虫:先爬取页面获得本地集合,之后只更新新产生或者已经发生变化的页面,而不是每次都从头开始。分布式爬虫:经常应用在任务量很巨大的情况下,把任务分配给多台机器进行爬取。通过科学合理地进行任务分配,快速的完成爬取任务。并行爬虫:并行运行多个爬虫。从给定的主机一次获取多个网页。并行爬虫提高了从万维网下载Web文档的速度,其应用也很广泛。爬虫工具及软件——常用爬虫工具爬虫工具简介Spidernet支持Windows操作系统,基于递归树模型的网络爬虫框架,支持多线程爬取,可以自行设置爬取深度和最大下载字节数限制NWebCrawler基于Windows操作系统的开源网络爬虫框架,其功能丰富,支持多线程,可设置优先级的MIME类型,而且执行过程可视化Sinawler基于.NET2.0框架,提供了针对SQLServer的数据库脚本文件。该框架顾名思义,主要针对新浪微博的数据进行爬取1、C#网络爬虫工具爬虫工具及软件——常用爬虫工具爬虫工具简介Crawler4j一款基于Java的轻量级单机开源爬虫框架,支持多线程爬取,具备基于BerkeleyDB的URL过滤机制,但该框架不支持动态网页的爬取,对于采取JavaScript的网页束手无策,同时也不能进行分布式数据采集WebMagic简单灵活,高效快捷,但缺点是不能对动态页面进行有效的爬取WebCollector无须配置、便于二次开发的JAVA爬虫框架,它支持断点重爬,而且支持代理,而且该框架基于文本密度对网页正文自动抽取,但不支持分布式爬取,且没有URL优先级调度2、Java网络爬虫工具3、Python网络爬虫工具Scrapy是一个基于Twisted实现的异步处理爬虫框架,Scrap是碎片的意思,代表它可以适应任何人根据自己的需求进行修改,定制化服务。Scrapy提供了种类丰富的基类,比如BaseSpider、sitemap等。而且,Scrapy可支持Linux、Mac、Windows等各种主流平台,正是由于其诸多特性,Scrapy应用十分广泛,可用于数据采集、网络监测,以及自动化测试等多种场景。爬虫工具及软件——常用爬虫软件爬虫工具简介八爪鱼一款可视化采集器,简单易用,内置数百个网站数据源,提供多种网页采集策略及配套资源,提供云采集操作,不过需要收费,支持多格式导出,也需要积分才能实现,该软件只支持Windows操作系统。集搜客同时支持Windows版和Mac版,全图形化操作界面,对新手友好,无需具备编程基础,可以设置周期性自动采集,实现持续的增量数据采集,有利于舆情监控、商品比价和大数据挖掘。WebScraperChrome的插件,可以在chrome网上应用商店安装,也可以下载插件安装包手动安装。WebScraper非常轻量,对新手也较为友好,支持绝大多数的网页的爬取,但需要充钱才能不限爬取速度。AnyPapa与WebScraper类似,也是一款轻量级插件,不过它可以应用于Chrome、360、QQ、搜狗等多款Chromium内核的浏览器,内置通用的URL打开器,可爬取多种数据格式,支持多种数据源。火车头功能强大,接口齐全,支持接口和插件多种扩展延伸,比如PHP和C#的插件扩展。支持各种数据格式输出,采用分布式高速采集系统,可以灵活迅速地抓取网页上散乱分布的数据信息,还兼有数据分析、挖掘的能力。但只支持Windows系统,且免费的功能限制很多。爬山虎采用可视化界面,不需要编程基础,静态网页、动态网页都可以采集,支持手机APP爬取,支持多种格式文件和数据库的导出,同时内置多款网站采集模板,但价格昂贵,适合大量长期的数据需求者。其他需要注意的问题——反爬虫及应对策略反爬虫策略简介信息校验型浏览器发出请求时,客户端会把“信息”包含在请求头和请求正文中,网站想要反扒就可以从这里入手,对发出的信息进行校验,包括对信息的正确性
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年食堂炊事员应急管理与服务合同范本3篇
- 2025年蟹塘养殖基地承包与品牌授权协议3篇
- 二零二五版美容院美容设备研发与技术支持采购合同4篇
- 2025年高速公路停车场租赁及旅游导览服务合同3篇
- 2025年星巴克绿色环保包装材料采购合同2篇
- 二零二五年度面包砖生产设备租赁合同4篇
- 2025年度采矿权出让合同范本:矿业权收益分配机制3篇
- 2025年度特色菜品研发厨师合作合同4篇
- 2025版吸粪车租赁合同范本(含保险条款)3篇
- 2025版售楼部装修工程防水防潮合同3篇
- 湖北省黄石市阳新县2024-2025学年八年级上学期数学期末考试题 含答案
- 硝化棉是天然纤维素硝化棉制造行业分析报告
- 央视网2025亚冬会营销方案
- 《无砟轨道施工与组织》 课件 第十讲双块式无砟轨道施工工艺
- 江苏省南京市、盐城市2023-2024学年高三上学期期末调研测试+英语+ 含答案
- 2024新版《药品管理法》培训课件
- 《阻燃材料与技术》课件 第7讲 阻燃橡胶材料
- 爆炸物运输安全保障方案
- 江苏省南京市2025届高三学业水平调研考试数学试卷(解析版)
- 钳工考试题及参考答案
- 移动商务内容运营(吴洪贵)任务五 引发用户共鸣外部条件的把控
评论
0/150
提交评论