收藏 分销(赏)

《数据清洗》课件 第7章 采集Web数据实例.pdf

上传人:曲**** 文档编号:231491 上传时间:2023-03-21 格式:PDF 页数:34 大小:1.11MB
下载 相关 举报
《数据清洗》课件 第7章 采集Web数据实例.pdf_第1页
第1页 / 共34页
《数据清洗》课件 第7章 采集Web数据实例.pdf_第2页
第2页 / 共34页
《数据清洗》课件 第7章 采集Web数据实例.pdf_第3页
第3页 / 共34页
《数据清洗》课件 第7章 采集Web数据实例.pdf_第4页
第4页 / 共34页
《数据清洗》课件 第7章 采集Web数据实例.pdf_第5页
第5页 / 共34页
点击查看更多>>
资源描述

1、数据清洗大数据应用人才培养系列教材第七章采集Web数据实例7.1网页结构7网络爬虫7:3 行为日志采集7:4上机练习与实训习题7.1网页结构第七章采集Web数据实例1.1.1 DOM 模型(1)DOM简介网页清洗的第一步是对页面结构的分析,页面结构分析在信息检索、分类、页 面适应等方面都有重要作用。DOM模型是网页典型的树形结构模型。DOM(Document Object Mode,文档对象模型)是W3c组织推荐的处理可 扩展标记语言的标准编程接口(API)。DOM将整个页面映射为一个由层次节点组 成的文件,而HTML的标记也具有一定的嵌套结构。通过HTML解析器(parse)可 以将HTM顷

2、面转化为一棵DOM树。如图所示,为网页DOM结构。7.1网页结构第七章采集Web数据实例1.1.1 DOM 模型(2)DOM树结构DOM是由一组对象和存取、处理文档对象的接口组成,包括文档、节点、元素、文本节点、属性等。如图7-1所示,为DOM树模型的结构。(3)访问DOM树结构属性是节点(HTML元素)的值,可通过JavaScript(以及其他编程语言)对 HTML DOM进行访问。访问HTML元素等同于访问节点,用户可以以不同的方式来访问HTML元素,表 7-1为访问HTM L元素的不同方法。7.1网页结构第七章采集Web数据实例根据W3C的HTML DOM标准,HTML 文档中的所有内容

3、都是节点。DOM文档 是由分层的节点对象构成,这些节点对象 构成一个页面。文档是一个节点,该节点 只有一个元素,这个元素就是它自己。元素是除文本之外的大多数对象,是从节点类型推导出来的。元素包 含属性,而且可以是另一个兀素的 父类型。/整个文档是一个文档节点,每个HTML/元素是元素节点。HTML兀素内的文本是文本节点,义本节/点处理文档中的文本。每个HTML属性是属性节点,是元素的 基本属性,因此它们不是元素的子节点。,7.1网页结构第七章采集Web数据实例(4)DOM的优点和缺点DOM的优点易用性强,使用DOM时,将把所有的 XML文档信息都存于内存中,并且遍历 简单,支持XPath。DO

4、M的缺点效率低,解析速度慢,内存占用量过高,对于大文件来说几乎不可能使用。另外,效率低还表现在大量地消耗时间,因为使 用DOM进行解析时,将为文档的每个 element、attribute,processing-instruction和comment都创建一个对象,这样在DO M机制中所运用的大量对象的 创建和销毁无疑会影响其效率。,7.1网页结构第七章采集Web数据实例1.1.2正则表达式(2)规则正则表达式一般由普通字符(例如字符 匕到z)以及特殊字符(称为元字符)组成。普通字符 非打印字符 特殊字符:特殊字符是一些有特殊含义的字符,若要匹配这些特殊字符,必须首先 使字符转义,即将反斜杠字

5、符()放在它们前面 限定符:限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹 酉己 定位符:定位符用来描述字符串或单词的边界,它能够将正则表达式固定到行首或 行尾,还可以用来创建出现在一个单词内、一个单词的开头或者一个单词的结尾的 正则表达式,7.1网页结构第七章采集Web数据实例1.1.2正则表达式(2)规则正则表达式一般由普通字符(例如字符 匕到z)以及特殊字符(称为元字符)组成。选择:用圆括号将所有选择项括起来,相邻的选择项之间用T分隔。但用圆括号 会有一个副作用,相关的匹配会被缓存,此时可用?:放在第一个选项前来消除这 种副作用。反向引用:需要匹配两个或多个连续的相同的

6、字符的时候,就需要使用反向引用。,7.1网页结构第七章采集Web数据实例1.1.2正则表达式(3)局限性利用正则表达式来清洗网络数据具有很大局限性,因为正则表达式是完全依赖网页结构 的。一旦网页布局发生变化,哪怕是一个小小的标记,也会导致数据清洗工作者费了很大 时间、精力设计和调试的正则表达式失效。更多情况是,网页的结构是无法使用正则表达 式来精确匹配的。大数据应用人才培养系列教材第七章采集Web数据实例7.1 网页结构7.2 网络爬虫7二3行为日志采集7.4 上机练习与实训 习题,7.2网络爬虫第七章采集Web数据实例1.2.1网络爬虫简介网络爬虫(又被称为网页蜘蛛、网络机器人),是一种按照

7、一定的规则,自动地抓取万维网信息的程序或者脚本。网络爬虫还有另外一些不常使用的名 字,如蚂蚁、自动索引、模拟程序或者蠕虫等。(1)网络爬虫的工作流程网络爬虫的工作流程图如下图所示:,7.2网络爬虫第七章采集Web数据实例1.2.1网络爬虫简介网络爬虫具体流程如下:首先选取一部分种子URL 将这些URL输入待抓取URL队列 从待抓取URL队列中取出待抓取的URL,解析DNS,得到主机的IP地址,并将URL对应的网页下载下来,存储到已下载网页库中,再将这些URL放 进已抓取URL队列分析已抓取URL队列中的URL,分析其中的其他URL,并且将URL放入抓取 URL队列如何编写网络爬虫呢?,7.2网

8、络爬虫第七章采集Web数据实例O安装Python1)下载Python程序安装包打开Python官方网站https:www.python.org,找至IDownloads区,单击进行下载。2)执行Python安装包注意,在安装Python过程中,集成开发环境IDLE是同Python一 起安装,不过需要确保安装时选中了Tcl/Tk组件。3)测试Python安装是否成功测试Python安装是否成功,可用cmd打开命令行输入python”命令。网络爬虫第七章采集Web数据实例构造get请求爬取搜狗首页步骤1:打开Python编辑器IDLE。步骤2:导入要使用的库步骤3:获取目的网页响应的对象:使用ur

9、lopen方法打开 目的网页,并返回网页响应对象fh,代码如下:fh=urllib.request.urlopen(http:/)步骤5:将data写入本地 sogoutest.HTML 文件进行 保存。在系统中创建HTML格 式的文件sogoutest。fh2=open(D:Pytho n35sugoutest.HTML,w 二encoding=utf-8)fh2.write(data)fh2.close()步骤4:获取对象fh的内容data,代码如下:data=fh.read()data=data.decode(utf-8f,ignore),7.2网络爬虫第七章采集Web数据实例S模拟浏览

10、器爬取模事百科网当用上述脚本爬取某些网站时,会出现http.client.RemoteDisconnectedn错误提示,即远程主机关闭了连接。这是因为某些网站采用User-Agent用户代理机制来识别浏览器版本,而 Python编写的脚本不具备浏览器属性。下面将介绍运用Python 模拟浏览器进行爬虫的步骤。步骤1:打开Python编辑器IDLE。步骤2:导入要使用的库import urllib.request步骤3:设置目的网页地址,代码如下所示:url=https: 成Chrome浏览器的用户代理。headers=(User-Agent,Mozilla/5.0(Linux;Android

11、 6.0;Nexus 5 Build/MRA58N)AppleWebKit/537.36(KHTML,like Gecko)Chrome/46.0.2490.76Mobile Safari/537.36)步骤5:创建opener对象,并将headers报头信息加载到opener中,代 码如下所示:opener=urllib.request.build_opener()opener.addheaders=headers步骤6:再利用。pener对象模拟Chrome浏览器爬取目的网页内容,代 码如下所示:data=opener.open(url).read()再参照构造get请求爬取搜狗首页的步骤

12、5将data数据存储到本地。,7.2网络爬虫第七章采集Web数据实例5构建get请求爬取百度搜索1)打开Python编辑器IDLE2)导入要使用的库,代码如下所示import urllib.request3)设置待检索关键词key=Python 学习方法 key_code=urllib.request.quote(key)4)生成目的网址 url2=url+key_code5)获取目的网页响应的内容采用Request方法将uH2网址封装为一个get请求req,再使用urlopen方法打开req,通过read方法读取内容.req=urllib.request.Request(url2)data=

13、urllib.request.urlopen(url2).read6)将data写入本地baidusearch.HTML文件进行保存 fh=open(D:/Python35/baidusearch.HTML,b w)fh.write(data)fh.close(),7.2网络爬虫第七章采集Web数据实例6构建post请求爬取网页步骤1:打开Python编辑器IDLE步骤2:导入要使用的库,代码如下所示:import urllib.requestimport urllib.parse步骤3:设置目的网址。步骤4:设置post请求数据。post请求数据应为输入登录表单的账号、密码。postdata

14、=urllib.parse.urlencode(,name,:,ad min,pass:123 456).encode(utf-8)步骤5:构造post请求。req=urllib.request.Request(url,postdata),7.2网络爬虫第七章采集Web数据实例O构建post请求爬取网页步骤6:模拟浏览器。将User-Agent的内容加载到post请求的头部。req.add-headerCUser-Agent/Mozilla/S.O(Linux;Android 6.0;Nexus 5 Build/MRA58N)AppleWebKit/537.36(KHTML,like Geck

15、o)Chrome/46.0.2490.76 Mobile Safari/537.36,)步骤7:获取目的网页响应内容。data=urllib.request.urlopen(req).read()步骤8:将data写入本地文件并保存。fh3=open(,D:/Python35/post_login.HTML,bw)fh3.write(data)fh3.close()7.2网络爬虫第七章采集Web数据实例爬取多页网页内容1)打开Python编辑器IDLE2)导入要使用的库,代码如下所示import urllib.requestimport re5)提取用户和内容信息6)遍历contentlist

16、中的内容,并将内容赋值给变量 name。name的形式为contentl、content2、contents 等3)步骤3:爬取某一页的具体内容。def getcontent(url,page)4)模拟浏览器,获取目的网页响应内容 headers=(User-Agent,Mozilla/5.0(Windows NT 10.0;WOW64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/59.0.3071.115 Safari/537.36)opener=urllib.request.build_opener()opener.addheaders=heade

17、rs data=opener.open(url).read().decode(utf=8)7)遍历userlist中的内容,并通过exec()函数,输出 content,content2等变量对应的值8)获取多页网页内容。,7.2网页爬虫第七章采集Web数据实例1.2.2网络爬虫异常处理,异常处理:当通过几十个代理IP实现爬虫操作时,如果其中一个代理IP突然不响应了 就会报错,并且这种错误触发率极高。但是一个出问题并不会影响到整个脚本的任 务,所以当捕获到此类异常的时候,直接忽略即可。URLError:通常,在没有网络连接(没有路由到特定服务器),或者服务器不存在 的情况,就会触发URLErr

18、or。这种情况下,异常通常会包含一个由错误编码和错误 信息组成的rea so n属性。HTTPError:HTTPError是URLError的子类,服务器上每一个HTTP的响应都包含一 个数字的状态码。有时候状态码会指出服务器无法完成的请求类型,一般情况 下Python会自动处理一部分这类响应,如果有一些无法处理的,就会抛出 HTTPError异常。这些异常包括典型的404(页面不存在),403(请求禁止)和 401(验证请求)。大数据应用人才培养系列教材第七章采集Web数据实例7;网页结构7.2 网络爬虫7.3 行为日志采集7合上机练习与实训习题)7.3行为日志采集第七章采集Web数据实例

19、13.1 用户实时行为数据采集用户行为日志采集是网站数据分析的第一步。而采集工具需要收集用户浏览目标网站 的行为(如打开网页、停留时间、单击按钮、打开次数、客户端IP、业务流步骤等)及 行为附加数据(浏览器、操作系统、Cookies等)。(1)JavaScript埋点进行数据收集利用JavaScript埋点进行数据收集的基本流程如下图所示:HTTP请求 HTTP请求浏览器J-被统计页面-JS文件(搜集客户端数据)HTTP请求-后端数据搜集脚本HTTP响应(种植cookie)写入访问日志)7.3行为日志采集第七章采集Web数据实例13.1用户实时行为数据采集(1)JavaScript埋点进行数据

20、收集具体步骤操作如下所示:用户的行为(比如打开网页)触发浏览器对被统计页面的一个HTTP请求。页面中埋点的JavaScript片段会被执行,指向一个独立的JS文件,会被浏览器请求 并执行,也就是数据采集过程。数据收集完成后,会将收集到的数据通过HTTP参数的方式传递给后端脚本,后端脚 本解析参数并按固定格式记录到访问日志,同时可能会在HTTP响应中给客户端种植一 些用于追踪的Cookie。)7.3行为日志采集第七章采集Web数据实例13.1 用户实时行为数据采集(2)JS埋点案例JS埋点通过使用JS收集客户端的Cookie信息,发送到后台一组服务器。例如借助新浪IP地址库,显示本地城市名称代码

21、如下:remote_ip_info.countryremote_ip_info.provinceremote_ip_info.city然后依次获取客户端IP、获取用户的访问开始时间、访问结束时间,以及用户与网站的 交互时间、获取单击按钮事件。)7.3行为日志采集第七章采集Web数据实例13.2 用户实时行为数据分析(1)行为日志采集相关技术 Flume:Flume是Cloudera提供的一个分布式、高可靠的、高可用的海量日志采集、聚合和传输的系统,它将各个服务器中的数据收集起来并送到指定的地方;Kafka:Kafka是一种高吞吐量的分布式发布-订阅消息系统,最初由Linkedln公司开发,之

22、后成为Apache项目的一部分。Nginx:Nginx(读作engine x)是一款轻量级、高性能的Web服务器/反向代理服务 器及电子邮件(IMAP/P0P3)代理服务器。Hadoop:Hadoop实现了一个分布式文件系统(Hadoop Distributed File System,HDFS)o Storm:Storm是由BackType开发的开源的分布式实时处理系统,支持水平扩展,具有高容 错性,保证每个消息都会得到处理。)7.3行为日志采集第七章采集Web数据实例13.2用户实时行为数据分析(2)用户实时行为数据分析流程用户实时行为数据分析流程如下图所示:日志采集集群kafka kaf

23、ka|kafkaKafka集群)7.3行为日志采集第七章采集Web数据实例13.2用户实时行为数据分析(2)用户实时行为数据分析流程用户实时行为数据分析流程具体步骤如下:Web或WAP通过网页埋点实时发送用户行为数据至日志采集后端Server,App直接调用 http接口,Server通过Logback输出日志文件。Flume通过tail命令监控日志文件变化,并通过生产者消费者模式将tail收集到日志推送至 Kafka集群。Kafka根据服务分配Topic,一个To pic可以分配多个Gro up,一个Group可以分配多个 PartitionoStorm实时监听Kafka,流式处理日志内容,

24、根据特定业务规则,将数据实时存储至Cache,同时根据需要可以写入H DFS。Kafka直接写入HDFS。大数据应用人才培养系列教材第七章采集Web数据实例7;网页结构7.2 网络爬虫7.3 行为日志采集7.4 上机练习与实训习题,7.4上机练习与实训第七章采集Web数据实例实训题目:免费网站用户行为采集工具的使用实训原理:Google Analytics(Google分析,简称GA)是Google的一款免费的网站 分析服务。GA功能非常强大,它创新性地弓I入了可定制的数据收集脚本,可以分析出 来访用户信息、访问时间段、访问次数、页面跳出率等信息,并且还提供丰富详尽的 图表式报告。国内的百度统计、搜狗分析等产品均沿用了谷歌分析的模式。.实训内容:(1)注册GA账号。(2)网站埋点GA码。(3)网站用户行为采集。(4)网站用户行为数据分析。实训指导详见课本内容。大数据应用人才培养系列教材第七章采集Web数据实例7;网更结构72网络爬虫7.3 行为日志采集7.4 上机练习与实训习题习题:1.用正则表达式将下面的URL分解为协议(ftp、http 等)、域地址和页/路径。http:/:80/HTM L/HTM L-tutorial.HTM L感谢聆听

展开阅读全文
相似文档
猜你喜欢
搜索标签

当前位置:首页 > 应用文书 > 其他

移动网页_全站_页脚广告1

关于我们     诚招英才     服务填表     联系我们

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号  |  icp.png浙ICP备2021020529号-1 浙B2-2024(办理中)  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服