商务数据分析技术 课件 项目三 数据采集技术_第1页
商务数据分析技术 课件 项目三 数据采集技术_第2页
商务数据分析技术 课件 项目三 数据采集技术_第3页
商务数据分析技术 课件 项目三 数据采集技术_第4页
商务数据分析技术 课件 项目三 数据采集技术_第5页
已阅读5页,还剩102页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据采集技术项目三Excel数据分析实例无锡商业职业技术学院李富学习目标知识目标01技能目标02素质目标03学习数据采集的技术,熟悉数据采集常

用技术的使用。掌握数据分析的使用场景,会对网页数据、日志数据和数据库进行数据分析,进行采集。具有数据采集思维,培养信息技术的素养学习导图任务一数据采集渠道01任务描述数据采集的重点不在于数据本身,而在于如何真正地解决数据运营中的实际商业问题。但是,要解决商业问题就得让数据采集产生价值,就得做数据分析和数据挖掘。而在数据分析和数据挖掘之前,首先要保证采集到高质量的数据。本节让同学们熟悉正确采集渠道,才能使分析出的数据结果对决策行为有指导性作用。任务目标1.熟悉数据采集渠道的种类。2.熟悉数据采集渠道重要性。一、数据来源数据采集又称“数据获取”,是利用一种装置或程序从系统外部采集数据并输入到系统内部的一个接口。数据采集一般有以下几个特点:数据采集以自动化手段为主,尽量摆脱人工录入的方式;采集内容以全量采集为主,摆脱对数据进行采样的方式;采集方式多样化、内容丰富化,摆脱以往只采集基本数据的方式。数据采集需要具备以下3个特性:(1)全面性:数据量具有分析价值、数据面足够支撑分析需求。(2)多维性:采集的数据更重要的是能满足分析需求。要灵活、快速地自定义所采集数据的多种属性和不同类型,从而满足不同的分析目标。(3)高效性:包含技术执行的高效性、团队内部成员协同的高效性以及数据分析需求和目标实现的高效性。一、数据来源1.1

政府数据政府数据往往具有较高的真实性、权威性、实时性以及数据对象描述指向性明确且具体等特点。政府数据的采集还存在很多的挑战和困难:首先,出于数据安全及涉密的考虑,政府数据往往具有很强的封闭性,这使得政府数据的获取成本往往极高;其次,根据不同的职能定位,不同政府部门运营和管理的数据往往仅与该部门独立职能相关,因此,每个部门的政府数据都缺乏全局性。一、数据来源1.2

企业业务数据大型企业和事业单位出于生产、销售等需求,会构建不同的目标应用系统,例如企业资源管理计划(enterpriseresourseplanningERP)、在线办公、在线交易等,这些系统不仅有效的完成了单位的主营业务,还汇聚了大量相关数据。企业的数据采集也存在着很多挑战和困难。首先,不同的企业拥有的数据在目标应用中的价值度是不一样的,数据往往仅反映某一个维度的价值趋势,而如何选择更多的、彼此互补的数据源本身就是一个难题,这不但涉及不同企业的数据评估问题,同时还受大数据项目建设的物理条件的约束;其次,在采集和整合不同单位的数据时,一个非技术因素的难题在于潜在合作单位是否愿意将数据共享;最后,不同企业的信息基础设施建设不均衡,这使得相同类型的数据在不同企业的服务器上的表现形式不完全一样,这给数据的采集与整合带来了极大的困难。一、数据来源1.3

物联网数据物联网在快速发展的同时也制造了海量数据,如何妥善处理及合理利用这些海量数据是物联网下一步发展的关键问题。物联网主要是通过传感器、条形码以及RFID(radiofrequencyidentification)等技术获取大量数据。条形码波广泛应用于零售商店的收银以及车站售票等业务中,每天大量的商品销售记录(数据)通过扫描条形码面产生。RFID技术又称无线射频识别,是一种通信技术,可通过无线电信号识别特定目标并读/写相关数据,而无须识别系统与特定目标之间建立机械或光学接触。RFID被广泛应用于仓库管理和清单控制方面。一、数据来源1.4

互联网数据Web2.0伴随着博客、百科全书以及社交网络等多种应用技术的发展,大量的网络搜索与交流促使形成海量数据,给人类日常生活方式带来了极大的变革。1.4.1门户网站具有较强的实时性和专业性1.4.2

电商网站真实性和实时性1.4.3论坛具有实时性和针对性二、数据的类型从采集数据的类型看,数据的类型是复杂多样的,包括结构化数据、非结构化数据和半结构化数据。2.1

结构化数据结构化数据最常见,就是具有模式的数据2.2非结构化数据

括所有格式的办公文档、文本、图片、各类报表、图像和音频/视顺信息等。2.3半结构化数据介于结构化与非结构化之间的数据,如XML、HTML和JSON就是常见的半结构化数据。结构化数据的有序掌控结构化数据是最为常见和熟悉的数据形态,它由明确定义的信息组成,并以高度组织化的表格或数据库进行存储和管理。结构化数据具备可搜索、可维护和可跟踪的特点,常见的例子有关系型数据库中的客户数据、订单数据、产品数据等。这种数据形态对于企业和组织来说至关重要,能够通过预定义的数据模型进行分析和挖掘,为决策提供有力支持。非结构化数据的自由释放与结构化数据相对应的是非结构化数据,它是指没有固定组织原则的未经过滤的信息。非结构化数据形式多样,包括图像、视频、音频文件和文本信息等。这类数据无法用传统的关系数据库进行存储,且数据量通常较大。非结构化数据的特点在于它没有预先定义好的数据模型,具备自由表达的能力,包含更多的细节和多样性。尽管处理和分析非结构化数据具有挑战性,但它蕴含丰富的信息和创新的潜力,广泛应用于图像识别、语音处理、自然语言处理等领域。半结构化数据的连接桥梁半结构化数据位于结构化数据和非结构化数据之间,具有一定的结构化特征,但不符合表格数据模型或关系数据库的格式。它包含一些易于分析的结构化元素,例如标记,使得数据处理和利用更加便捷。半结构化数据在特定领域中扮演重要的角色,比如XML文档和JSON数据格式等。它既保留了部分结构化数据的优势,又能够灵活适应数据的变化和扩展。三、数据采集范围的划分按照数据产生的主体不同,数据采集范围主要包括数据库采集、系统日志采集、网络数据采集、感知设备数据采集等。四、采集流程数据采集可以将非结构化数据从网页或者业务处理系统中抽取出来,将其存储为统一的本地数据文件,并以结构化的方式储。它支持图片、音频、视频等文件或附件的采集,附件与正文可以自动关联。网页爬取的采集流程。在网页数据采集的过程中,一般需要经过采集、清洗、存储3个步骤,具体介绍如下。第一步:采集数据。网络爬虫的第一步是本地对起始URL发送请求以获取其返回的响应,以提取包含在其中数据。此步骤一般情况下是通过Python实现。第二步:清洗数据。清洗数据是采集数据之后的一个非常重要的步骤,通过数据清洗来统一数据的格式,减少数据分析中存在的众多问题,准确分析数据,从而提高数据的分析效率。在网页中,可以剔除一些与内容无关的标记,如样式、脚本等。第三步:存储数据。存储数据是网络爬虫的最后一步,获取的数据在进行适当的处理后就可以保存起来并用于进一步的分析。使用网络爬虫的相关知识除了可以实现网站页面的爬取,还可以实现App中页面相关信息的爬取,由于手机的普及,App中相关的信息也同样是大数据分析中不可或缺的一部分。五、采集方法5.1手工编程Python:是一种免费的开源语言,因其易用性而常常与多种采集工具相提并论。5.2开源工具Filebeat:是一种开源的本地文件日志数据采集器Logstash:是一种在日志关系系统中进行日志采集的设备,Flume:是一个分布式的、高可靠的、高可用的日志采集器,5.3商业工具除了手工编程工具和开源工具以外,还有还有许多专门的商业数据采集平台,他们提供多场景数据计算和分析挖掘的科研基础环境,充分结合行业课题的相关数据,并利用大数据技术深入挖掘分析。任务二数据采集技术02任务描述数据采集是数据系统必不可少的关键部分,也是数据平台的根基。根据不同的应用环境有采集对象,有多种不同的数据采集方法,包括网络数据采集、系统日志采集、分布式消息订阅分发、数据库数据采集等。工欲擅其事,必先利其器。本节同学们要熟悉八爪鱼、requests、Flume采集技术。任务目标1.熟悉数据采集的几种技术。2.熟悉数据采集技术的处理步骤。数据采集方法的选择不但要依赖数据源的物理性质,还要考虑数据分析的目标。大数据采集过程的主要特点和挑战是并发数高,因为同时可能会有成千上万个用户在进行访问和操作,所以在采集端需要部署大量数据库才能对其提供支撑,并且在这些数据库之间进行负载均衡与分片需要深入的思考和设计。一、八爪鱼八爪鱼采集器:是一款免费的、简单直观的网页爬虫工具,无须编码即可从许多网站抓取数据。为了减少使用上的难度,八爪鱼为初学者准备了“网站简易模板"网站。1.1简介八爪鱼采集器是一款全网通用的互联网数据采集器,模拟人浏览网页的行为,通过简单的页面点选,生成自动化的采集流程,从而将网页数据转化为结构化数据,存储于EXCEL或数据库等多种形式。并提供基于云计算的大数据云采集解决方案,实现数据采集。是数据一键采集平台。1.2

产品功能1.2.1采集全行业、全场景、全类型数据采集可存储的任务数无上限,实现全行业、全场景、全类型的互联网数据采集。全行业:电商、新闻、社交媒体、招投标、金融、房产等全行业的互联网数据采集。行业网站已做好可用的模板。全场景:列表页、详情页、搜索页、瀑布流页、登录、多层点击、下拉框、IP切换、验证码自动识别等场景采集。全类型:支持文字、链接、图片、视频、音频、Html源码、Json格式等多种数据类型的采集。1.2

产品功能1.2.2

高速采集大规模数据使用高性能的云服务集群,提供多节点高并发采集能力,能够完成大规模数据的采集。高性能:企业版可使用独立的、高性能的云服务集群,无需排队即可开始数据采集。1.2.3

实时采集新增数据支持设置灵活的定时采集策略+多节点高并发采集+自动去重/条件触发等功能,实时采集各个数据源的新增数据。1.2

产品功能1.2.4

提供API接口,采集结果同步提供高负载高吞吐的API接口,可将采集结果秒级同步到企业数据库或内部系统中。除了API外,提供自动入库功能。1.2.5

支持SaaS版本与私有化部署版本提供线上SaaS版本的软件服务,下载客户端即可使用。同时支持将整套采集系统部署到企业本地,搭建企业自己的大数据采集系统二requests库爬取网站数据2.1

网络爬虫的概念网络爬虫(WebCrawler)又称为网络蜘蛛(WebSpider)或网络机器人(WebRobot),是模拟客户端(浏览器)发送网络请求、获取响应,并按照自定义的规则提取数据的程序,简单来说,就是发送与浏览器一样的请求,获取与浏览器所获取的一样的数据。二requests库爬取网站数据2.2网络爬虫的类型网络爬虫按照系统结构和实现技术大致可以分为4种:通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层页而爬虫。2.2.1通用网络爬虫通用网络爬虫又称全网爬虫,爬行对象由一批种子URL扩充至整个Web,主要为门户站点、搜索引擎和大型Web服务提供商采集数据,在互联网中爬取目标资源,爬取数据巨大。2.2.2

聚焦网络爬虫聚焦网络爬虫又称为主题网络爬虫,是指选择性地爬取那些与预先定义好的主题相关的网络爬虫。主要应用在对特定信息的爬取中,要为某一类特定的人群提供服务。2.2.3增量式网络爬虫增量式网络爬虫是监测网站数据的更新情况爬取其更新的数据,对于未发生内容变化的网页不会爬取。增量式网络爬虫在一定程度上能够保证所爬取的页面尽可能是新页面。2.2.4深层页面爬虫Web页面按存在方式分为表层网页和深层网页。表层网页是传统搜索引擎可以索引的页面,是以超链接可以达到的静态网页为主的Web页面。深层网页是大部分内容不能通过静态链接获取的、隐藏在搜索表单后、只有用户提交一些关键词才能获得的Web页面。例如,那些用户注册后内容才可见的网页就属于深层页面。2.3网络爬虫的用途网络爬虫的应用十分广泛,不仅应用在搜索引擎上,用户和企业等分析网站都离不开。比如,通过如图3-3所示的百度新闻网站,可以通过搜索引擎搜索想获取的信息。2.4网络爬虫法律规定本秩序还处于建设之中,从目前的实践来看,如果抓取数据的行为用于个人学习使用,通常不存在问题;而如果数据用来转载,则需要注意原创作品的版权问题。具体的法律法规见附录。很多网站都会定义robots.txt文件,这可以让爬虫了解爬取该网站时存在哪些限制,下面的地址列出一些知名网站的robots.txt访向地址。(1)https:///robots.txt。(2)https:///robots.txt.(3)https:///robots.txt。2.5爬虫的基本流程用户获取网络数据有两种方式:一种是浏览器提交请求----下载网页代码----解析成页面。另一种是模拟浏览器发送请求(获取网页代码)----提取有用的数据---存放于数据库或文件中。爬虫一般是使用第二种方式。2.5.1发起请求在爬虫过程中一般使用HTTP库向目标站点发送请求,即发送一个Request,该请求中包含请求头和请求体。请求头为user-agent:请求头中如果没有user-agent客户端配置,则服务端可能当作个非法用户host;2.5.2

如果发送请求成功服务器能够正常响应,则会得到一个Response,包含HTMLJSON、图片、视频等。解析内容响应的内容如果是HTML数据,则需要正则表达式(RE模块)、第三方解析库如Beautifulsoup、pyquery等解析。如果是JSON数据,需要使用JSON模块连接续,如果是进制文件,则需要以wb的方式写人文件。在编写爬虫时,请求头(HTTPHeaders)是一个非常重要的部分。它们不仅可以帮助你模拟正常的浏览器行为,还可以避免被目标网站识别为爬虫而遭到封禁。以下是一些常见的请求头及其作用,以及如何编写它们。常见的请求头及其作用User-Agent作用:标识发出请求的客户端类型(如浏览器、操作系统等)。示例:Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/91.0.4472.124Safari/537.36Accept作用:指定客户端能够处理的MIME类型。示例:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8请求头详解及举例Accept-Encoding作用:指定客户端支持的编码格式。示例:gzip,deflate,brAccept-Language作用:指定客户端首选的语言。示例:en-US,en;q=0.9Connection作用:控制是否保持连接。示例:keep-aliveCookie作用:存储会话信息,保持登录状态等。示例:session_id=abc123;user_id=xyz789Host作用:指定请求的目标主机和端口。示例::80Referer作用:标识请求的来源页面。示例:/importrequestsurl=''headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/91.0.4472.124Safari/537.36','Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','Accept-Encoding':'gzip,deflate,br','Accept-Language':'en-US,en;q=0.9','Connection':'keep-alive','Referer':'/','Cookie':'session_id=abc123;user_id=xyz789','Host':''}response=requests.get(url,headers=headers)print(response.text)2.6爬虫的主要框架2.6.1

在Python中爬虫框架爬虫框架很多,常见的爬虫框架主要有Scrapy框架、Pyspider框架和Cola框架。Scrapy框架是Python中最著名、最受欢迎的爬虫框架。Scrapy框架是为了爬取网站数据、提取结构性数据面编写的.Pyspider框架是国内的程序员编写的、用Python实现的、功能强大的网络爬虫系统,能在浏览器界面上进行脚本的编写、功能的调度和爬取结果的实时查询。Cola框架是一个分布式的爬虫框架,用户只需编写几个特定的函数,而无需关注分布式运行的细节,任务会被自动分配到多台机器上,整个过程对用户是透明的。requests是python第三方的HTTP模块库。它基于urllib,又比urllib更加简单高效。支持Get、Post、Put、Delete、Head、Options等HTTP请求。使用requests可以让Python实现访问网页并获得源代码的功能。Requests不是Python的标准库,需要安装,可以在命令行中使用pip进行安装。安装命令如下。------------>pipinstallrequests执行上述命令即可安装requests库,安装完成后,需要在Python的shell中导人requests库。导入成功效果如下。-------------->importrequests2.6.2

requests库请求方法在浏览器里面可以直接通过输入网址访问的页面,就是使用了GET方法。使用GET方法获取网页源代码的语法结构为:html=requests.get(‘网址’)还有一些页面只能通过从另一个页面单击某个链接或者某个按钮以后跳过来,不能直接通过在浏览器中输入网址访问,这种网页就是使用了POST方法。使用POST方法获取源代码的格式如下。----------------------------------------------------data=(key1':'value1key2:value2html_formdata=requests.post('网址’,data=data).content.decode()还有一些网址,提交的内容需要是JSON格式的,requests可以自动将字典转换为JSON字符串,示例代码如下。----------------------------------------------------html_json=requests.post(‘网址’,json=data).content.decode()#content.decode解码。在requests库中,当你发送一个HTTP请求并接收到响应时,响应体(即服务器返回的内容)通常是以字节(bytes)形式存在的。为了将这些字节转换成字符串(str),你需要对它们进行解码。(3)响应状态码响应状态码是用来表示网页服务器HTTP响应状态的3位数字代码,可以使用response.status_code查看响应状态码,示例代码如下。---------------------------------------------------->response=requests.get('')>response.status_code#如200OK:请求成功,服务器正常返回请求的内容。4xx(客户端错误状态码)。(4)响应内容requests会自动解码来自服务器的内容。大多数unicode字符集都能被无缝地解码。使用response.text命令可以查看文本内容。示例代码如下。---------------------------------------------------->importrequests>r=requests,get("https;//")>text(5)定制请求头服务器通过该取请求头部的代理信息来判断这个请求是正常的浏览器还是爬虫,因此在使用requests的过程中就可以为请求添加HTTP头部来伪装成正常的浏览器,只需要传递一个dict给neaders参数即可。示例代码如下。---------------------------------------------------->url=''>headers={'User=Agent''Mozilla/5.0(WindowsNT100:WOW64)AppleWVebkit/537.36HML,likeGecko)Chrome/58.0.3029.110Safari/537.36SE2.XMetaSr1.0'}>r=requests.get(url,headers=headers)三业务系统日志采集技术

Flume是一个分布式、高可靠和高可用的海量日志采集、聚合及传输服务。Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供了对数据进行简单处理,并写到各种数据接收方(如文本、HDFS、HBase等)的功能。其设计原理是将数据流(如日志数据)从各种网站服务器中汇集起来,并存储到HDFS、HBase等集中存储器中。3.1

Flume简介Flume运行的核心是Agent。Flume以Agent为最小的独立运行单位,一个Agent就是一个Java虚拟机(JavavintualMachine、JVM),它是一个完整的数据采集工具,包含三个核心组件,分别是数据源(Sounce)、数据通道(Channel)和数据槽(Sink),如图3-6所示。通过这些组件,“事件“可以从一个地方流向另一个地方。Agent是Flume数据流的基本单元和执行实体。Agent负责数据的收集、暂存和传输,是Flume运行的核心组件。Web服务器SoureSink

AgentChannelHDFS3.1.1数据源的收集数据源是数据的收集端,负责将数据捕获后进行特殊的格式化,将数据封装到事件(Event)里,然后将事件推入数据通道。3.1.2数据通道数据通道是连接数据源和数据槽的组件,可以将它看作数据的缓冲区(数据队列),它可以将事件暂存到内存中,也可以将事件持久化到本地磁盘上,直到数据槽处理完该事件。3.1.3数据存储数据槽取出数据通道中的数据,存储到文件系统和数据库,或者提交到远程服务器。Flume提供了大量内置的数据源、数据通道和数据槽类型。不同类型的数据源、数据通道和数据槽可以自由组合。组合方式基于用户设置的配置文件,非常灵活。例如,数据通道可以把事件暂存在内存里,也可以将事件持久化到本地硬盘上;数据槽可以把日志写人HDFS、HBase,甚至另外一个数据源。3.2

Flume的安装3.2.1

Flume的安装Flume的运行需要Java环境的支持,因此,需要在Windows操作系统中安装JDK。Java开发工具包(JavaDevelopmentKit,JDK)是整个Java的核心,包括了Java运行环境(JavaintimeEnvironment)、Java工具和Java基础类库等。要想开发Java程序,就必须安装JDK,因为JDK包含了各种Java工具;要想在计算机上运行使用Java开发的应用程序,也必须安装JDK。下载JDK安装包并完成安装。安装完成后需要设置环境变量Path。右键单“计算机“,再单击“属性“→“高级系统设置“→“环境变量“,在弹出的对话框中选中用户变量Path,然后单击“编辑(E)…“按钮,在“变量值“文本框中添加如下信息:C:\ProgramFiles\Java\jdk1.8.0_60\bin然后,用同样的方法打开“环境变量“对话框,单击“新建(W)…“。如图3-7所示,新建系统变量JAVA_HOME,把“变量值“设置如下:打开cmd命令行窗口,输人“java-version“命令测试是否安装成功。如果安装成功,则会返图3-9所示信息3.2.2访问Flume官网下载Flume安装文件apache-fume-1.9.0-bin.tar.gz。把安装文件解压缩到Windows操作系统的“C:\“目录下,然后执行如下命令测试是否安装成功:>cdc:\apache-flume-1.9.0-bin\bin>flume-ngversion如果能够返回类似如下代码的信息,则表示安装成功:F1ume1.9.0sourcecoderepository:https:///repos/asf/flume.gitRevision:d4fcab4f501d41597bc616921329a4339f73585eCompiledbyfszaboonMonDec1720:45:25CET2018Fromsourcewithchecksum35db629a3bda49d23e9b3690c80737f9任务三数据采集技术实现(案例)02任务描述数据采集技术,是我们数据分析重要前提,同学们要会正确熟练使用采集工具。本节任务是使用八爪鱼、requests、Flume技术进行网页数据采集,网站数据采集、日志采集和数据库采集,进行数据的采集。任务目标1.熟悉数据采集技术的具体应用。2.熟悉采集数据的导出。一八爪鱼网络爬虫的安装八爪鱼是一种网络爬虫工具,可以帮助用户快速获取网页上的数据。以下是使用八爪鱼获取数据的内容和方法:确定目标数据源:首先需要确定要获取数据的网站或数据源.….了解网站的结构、数据存储方式以及是否存在反爬机制等信息。选择合适的采集模板:八爪鱼提供了多种采集模板,可以根据目标数据源的结构和数据特点选择合适的模板,如列表页采集、详情页采集等。配置采集规则:根据目标数据源的特点和需求,配置相应的采集规则,如提取链接、提取字段等。运行采集任务∶配置完成后,可以运行采集任务,八爪鱼会自动按照配置的规则抓取数据。处理和导出数据:八爪鱼支持将抓取的数据保存为多种格式(如Excel、CSV等),可以根据需要选择相应的格式导出数据。优化采集规则:在实际使用中,可能需要不断调整和优化采集规则,以获取更准确、更完整的数据。任务步骤:第一步:打开八爪鱼官网,下载八爪鱼采集器,如图3-9所示。第二步:下载后解压文件,双击“OctopusSetup8.6.7.exe"进行安装。第三步:安装成功后打开该软件,出现登录界面,如图3-10所示。第四步:输入账号,密码进行“登录",进入八爪鱼首页,如图3-11所示。第五步:观看“八爪鱼首页”,左边是“功能选项”,中间是“采集模板”,右边主要是“教程与帮助”。初学者如果不清楚采集方法和流程,可以仔细看看教程与帮助,这里有许多采集方法。本文只介绍一种。第六步:选择“新建",进入“自定义任务"命令,在“网址"文本框中输入“https://",如图3-12所示。第七步:单击“保存设置"按钮,开始爬取网站的数据,如图3-13所示。第八步:单击“不再自动识别”按钮,打开“操作提示”窗口,如图3-14所示。第九步:设置采集字段,选择“数据浏览"下,“增加字段"流程,增加字段,我们事先准备好字段,粘贴进去,点击“采集"。开始数据采集。如图3-15所示。第十步:采集完成,根据提示,选择文件类型,导出数据。如图3-16所示。二requests库爬取网站实现本任务的思路如下。1、使用requests库获取网页源代码。2、使用正则表达式获取内容。3、任务步骤第一步:打开网站,找到“警世通言"的位置,如图3-15所示。第二步:使用requests获取网页源代码。---------------------------------------------------- start_url="/files/old/2011/2512.html"defgetsource(url):获取网页源代码。

''':paramurl:网址:return:网页源代码

'''html=requests.get(url)returnhtml.content.decode(gbk)#这个网页需要使用gbk方式解码才能让中文正常显示第三步:单击鼠标右键,在弹出的快捷菜单中选择“查看网页源代码"命令,如图3-18所示第四步:查看网页源代码。单击之后效果如下所示。▼<tablewidth="98%"border="0"align="center"cellpadding=0"cel1spacing="0">▼<tbody>▼<tr><ahref="2512/73855.html">第五卷吕大郎还金完骨肉</a></td>▼<td>…</td>由于网址存在于<a>标签中,但<a>标签本身没有特殊的标识符来区分章节的链接和其他普通链接,因此需要使用先抓大再抓小的技巧。构造正则表达式,先提取出包含每一章链接的一大块内容,再对这一大块内容使用正则表达式提取出网址。由于源代码中的网址使用的是相对路径,因此需要手动拼接为绝对路径,代码如下。defget_toc(html):""""获取每一童链接,储存到一个列表中并返回。:paramhtml:目录页源代码:return:每章链接""""toc_url_list=[]toc_block=re.findall('正文(.*?</tbody>',html,re.S)[0]toc_url=re.findall(href="(.*?)",toc_block,re.S)forurlintoc_url:toc_url_list.append(‘/files/old/2011/”+url)name=re.findall(‘<h2><b>(.*?)</b></h2>'.html,re.S)[0]returntoc_url_list,name第五步:单击“第一卷“,查看源代码,如下所示。▼<tablewidth="880"border="0"align="center"cellpadding="0">▼<tbody>▼<tr><br><br>"----------------------------------------------------以上是第一卷源代码搜索源代码中的<p>标签和</p>标签,发现它刚好有一对,正好包裹着正文。而正文中的<br/>标签没有必要用正则表达式来去除,直接使用字符串的replace()方法把其替换为空即可。代码如下。defget_article(url:)"""获取每一卷的正文并返回卷名和正文:paramhtml:正文源代码:return:卷名,正文"""html=requests.get(url).content.decode(‘gbk’)chapter_name=re.findall(‘tdwidth="880"height="60align="center"bgcolor="#FFFFFF"><h2><fontcolor="#dc143c">(.*?)</font>’,html,re.S)[0]text_block=re.findall(‘<p>(.*?)</p>’,html,re.S)[0]Text_block=text_block.replace('<br/>',")returnchapter_name,text_block第六步:保存数据到本地,代码如下。defsave(name,ChaptersAndSections,content):f=open(‘./'+url[1]+/+ChaptersAndSections+‘.txt',mode='a+')f.write(content)f.closel()第七步:编写主函数,代码如下。if_name_=='_main_’:html=get_source(start_url)url=get_toc(html)os.makedirs(‘./’+url[1))foriinurl[O]:text=get_article(i)save(url[1],text[0],text[1])第八步:运行项目,生成的文件如图3-19所示。三

Flume系统日志采集使用Flume的核心是设置配置文件,在配置文件中,需要详细定义Source、Sink和Channel的相关信息。这里通过两个实例来介绍如何设置配置文件。3.1.1采集NetCat数据显示到控制台这里给出一个简单的实例,假设Source为NetCat类型,使用Telnet连接Source写入数据产生的目志数据输出到控制台(屏幕)。下面首先介绍在Windows7中的操作方法,然后介绍在Windows10中的操作方法。为了顺利完成后面的操作,首先开启Windows7的Telne服务。具体方法是、打开“控制面板“,单击“程序“一“默认程序“,在窗口左下角单击“程序和功能“,再单击左侧顶部的打开或关闭“Windows功能“,会出现图3-20所示的窗口。把“Telnet服务器“和“Telnet客户端“都选然后单击“确定“按钮。在Flume安装目录的conf子目录下,新建一个名称为example.conf的配置文件,该文件的内容如下:#设置Agent上的各个组件名称al.sources=r1al.sinks=kla1.channels=c1#配置Sourcea1.sources.rl.type=netcata1.sources.rl.bind=localhosta1.sources.rl.port=44444#配置Sinka1.sinks.kl.type=logger#配置Channela1.channels.cl.type=memorya1.channels.c1.capacity=1000a1.channels.cl.transactionCapacity=100#把source和sink绑定到channel上a1.sources.rl.channels=cla1.sinks.k1.channel=cl配置文件设置了Sourse类型为NetCat,Channel类型为Memory,Sink类型为Logger。然后,新建一个cmd命令行窗口(这里称为“Flume窗口“),并执行如下命令:>cdc:apache-flume-1,9,0-bin>.bin\flume-ngagent--conf.\conf--conf-file.\conf\example.conf--nameal--propertyflume.root.logger=INFO,console再新建一个cmd命令行窗口,并执行如下命令:>telnetlocalhost44444这时就可以从键盘输人一些英文单词,如“HeloWord“,切换到Flume窗口,就可以看到屏幕上显示了“HelloWorld“,如图3-21所示。这说明Flume成功地接收到了信息。现在介绍Windows10中的操作方法在Windows10运行Flume的操作和Windows7一样,不同的是Telnet操作。由于Telnet服务端的安全性问题、Windows10移除了1elnet服务端组件,也就是说,在Windows10中无法找到Telnet服务端组件,也就无法执行“telnetlocalhost44444“命令,因此,操作方法不同于Windows7。为了能够执行“telnetlocalhost44444“命令,这里使用子系统的方法通过Linux的telnet命令进行操作,噪作步骤如下。进入Windows10自带的“软件商店“(MicrosofStore),在软件商店中搜索“Ubuntu“选择第一个搜索结果进行下载,如图3-22所示。下载结束后,单击“安装“按钮完成Ubuntu系统的安装。安装完成后,可以从“开始“菜单启动Ubuntu、如图5-6所示。初次启动时需设置用户名和密码,设置以后就可以进入Ubuntu的命令行窗口。在命令提示符后面输人“telnetlocalhost44444“命令即可,如图5-7所示。Ubuntu子系统和原系统Windows10的端口信息可以互通,效果等同于Windows7中的telnet命令。这时从键盘输入一些英文单词,如“HelloWorld“,切换到Windows10中的Flume窗口,就可以看到屏幕上显示了“HelloWorld“,说明Flume成功地接收到了信息。3.1.2采集目录下的数据显示到控制台假设Windows操作系统中有一个目录“C:mylogs”,这个目录下不断有新的文件生成。使用Flume采集这个目录下的文件,并把文件内容显示到控制台(屏幕)。在Flume安装目录的conf子目录下,新建一个名称为examplel.conf的配置文件,该文件的内容如下:#设置Agent上的各个组件名称al.sources=rla1.channels=c1al.sinks=kl

#配置Sourcea1.sources.rl.type=spooldira1.sources.r1.spoolDir=C:/mylogs/

#配置channela1.channels.cl.type=memorya1.channels.c1.capacity=10000a1.channels.cl.transactionCapacity=100

#配置Sinkal.sinks.k1.type=logger106#把source和sink绑定到channel上al.sources.rl.channels=c1al.sinks.kl.channel=cl清空“C:\mylogs”目录(即删除该目录下的所有内容),然后新建一个cmd命令行窗口(这里称为“Flume窗口”

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论