《大数据导论》课件-第三章 数据采集_第1页
《大数据导论》课件-第三章 数据采集_第2页
《大数据导论》课件-第三章 数据采集_第3页
《大数据导论》课件-第三章 数据采集_第4页
《大数据导论》课件-第三章 数据采集_第5页
已阅读5页,还剩90页未读 继续免费阅读

下载本文档

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

文档简介

大数据导论数

集查看网页源码及结构目录01网页打开流程02DOM文档对象模型

03网页源码分析

网页打开流程HTML文档对象模型(DOM)浏览器会把服务器响应的HTML文档解析成一个树结构,并且在此基础上定义了访问和操作HTML文档的标准。根据W3C标准我们称之为HTMLDOM(DocumentObjectModel)文档对象模型。DOM根节点

末梢节点下无其它子节点存在,如Inupt、Td、H1之类的节点。03在DOM结构树中,处于中间位置的节点,此类节点内部仍然有其它节点,如Body、Div、Table节点等等。02DOM根节点,访问文档中各个标签的时候,都需要先访问该节点01末梢节点

末梢节点

分支节点

分支节点末梢节点

HTML文档中的所有内容都是节点,且有以下几个类型。整个文档是一个文档节点(document节点)每个HTML元素是元素节点HTML元素内的文本是文本节点每个HTML属性是属性节点注释是注释节点HTMLDOM结构解析网页源码分析分析新浪网的网页源码1.浏览器输入网址:建议用谷歌浏览器2.打开开发者模式(按F12)3.选择“Elements”功能,查看HTML文档4.在HTML文档中,移动鼠标,并观察网页变深色的区域。深色区域即对应了鼠标所在的HTML标签内容。网页源码分析通过这种分析方式,可以快速定位需要采集的内容,进而可以通过DOM结构树提取相关内容数

集移动端APP数据请求结构目录01存在问题

02APP内容组成03分析采集思路

04截获分析与请求模拟存在的问题APP内容采集安装在移动端内容传输多样化部分APP对数据流加密APP内容组成APP内容在一个界面中包含各种元素,有视频、图片、用户账号数据、用户业务数据等等。同一个动作可能触发多个内容更新,但是绝大部分APP会将不同的数据存放在不同的服务器中,以便提升响应效率。数据从服务器中响应到APP中是通过HTTP或者HTTPS协议来完成的,响应内容可分为二进制流、HTML文档、XML文档、JSON数据。APP内容组成服务器1服务器2分析与采集思路截获APP的请求数据流,并分析请求和响应数据报文,确定APP界面数据与响应报文关系既然APP内容更新是通过HTTP或者HTTPS协议实现的,那么可以用Python模拟HTTP请求报文针对不同的数据流,发起不同的请求响应处理对各种响应数据流的进行解析和数据整合++Filebeat协议代理器安卓模拟器Python爬虫数据流截获分析与请求模拟安卓模拟器电脑安装解决APP在移动端无法分析的问题通过Fiddler分析数据流从众多的数据流中,寻找到APP相关页面或功能的数据流确定请求URL与响应报文的关系Fiddler代理安卓模拟器数据流让APP所有数据经过Fiddler代理Python模拟数据流请求报文通过响应报文内容结果,提取有用数据存储数据分析明确采集对象-习题讲解————数据采集1.HTML文档对象模型(DOM)中,每一个元素的组织方式是()。A.层次结构B.树型结构C.网状结构D.都不是2.分析网页源代码,需要在浏览器中,按()键进入开发者工具。A.

F1B.

F2C.

F11D.

F123.在开发者工具中,如何定位目标元素与对应的源码位置?A.根据HTML标签含义,逐行对照,直到找到目标元素的源码B.移动鼠标,并观察网页变深色的区域,深色区域便是目标元素所在源码区域C.根据经验,大致判断目标元素在界面中的顺序关系,大致确定在源代码中的位置。D.通过搜索功能实现。4.下列说法中,正确的是()。A.移动端APP的数据采集分析过程,由于看不到数据的源码,无法分析数据格式。B.移动端APP的数据采集分析过程,需要借助HTTP/HTTPS抓包软件实现。C.移动端APP的抓包过程中,都是明文数据。D.最终程序采集的时候,也需要借助抓包软件。5.简述一下移动端APP的数据采集分析为什么需要用到抓包软件?

由于移动端APP的特殊性,无法直接通过类似浏览器的方式分析网页的html源代码,但是其请求与响应的过程仍然是HTTP协议,因此通过抓包软件,抓取该过程中的请求数据报和响应数据报,并对报文进行解析分析,即可得到想要的数据。6.

简述一下移动端APP的数据采集分析过程。

(1)、设置移动端通过电脑端代理上网

(2)、移动端和电脑端都安装Fiddler的证书

(3)、通过Fiddler抓包工具,抓取跟APP相关的请求和响应报文

(4)、解析报文内容数

集HTTP协议介绍目录01HTTP简介

02请求报文

03响应报文

HTTP简介HTTP协议什么是HTTP协议?请求-响应的模式HTTP协议规定,请求从客户端发出,最后服务器端响应该请求并返回。因此:必须是先从客户端开始建立通信的,服务器端在没有接收到请求之前,不会发送响应HTTP简介HTTP协议是HyperTextTransferProtocol(超文本传输协议)的缩写,是用于从服务器传输超文本到本地浏览器的传送协议。工作机制:1、建立TCP连接:点击链接即自动完成连接。2、客户端发送请求报文(Request):客户端通过URL向HTTP服务端即WEB服务器发送一个HTTP协议的请求数据包。3、服务器响应报文(Response):Web服务器收到的请求后,根据请求内容,向客户端发送响应数据。4、结束TCP连接。HTTP协议之请求报文请求报文由四部分组成:第一部分:请求行,用来说明请求类型,要访问的资源以及所使用的HTTP版本号。第三部分:空行,请求头部后面的空行是必须的。本例中请求数据为空第四部分:请求数据也叫主体,可以添加任意的其他数据。第二部分:请求头部,紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息。HTTP协议之响应报文响应报文由四部分组成:第一部分:状态行,由HTTP协议版本号,状态码,状态消息三部分组成。第二部分:消息报头,用来说明客户端要使用的一些附加信息。第三部分:空行,消息报头后面的空行是必须的本例中请求数据为空第四部分:响应正文,服务器返回给客户端的数据信息。数

集构建数据采集请求目录01模拟HTTP请求访问资源

02如何选择语言

03操作URL的Python模块

04浏览器的模拟-构建Headers

浏览器访问资源1、用户点击链接、浏览器自动生成HTTP请求报文2、服务器收到请求报文,根据报文内容,回复响应报文3、浏览器收到服务器的响应报文,解析提取模拟HTTP请求访问资源我是客户端程序模拟访问资源1、程序构建HTTP请求报文,模拟发送请求2、服务器收到请求报文,根据报文内容,回复响应报文3、程序收到服务器的响应报文,解析提取语言如何选择PythonJavaC/C++.NETC/C++:高效率,快速,适合通用搜索引擎做全网爬取。但其缺点明显,由于现有第三方代码支持较少,原生代码开发难度大,代码量庞大。Perl,Java,Ruby:简单,易学,良好的文本处理能方便网页内容的提取,但效率不高,适合对少量网站的聚焦爬取。.NET:平台支持不好,仅仅可以在window系统平台运行。Python在HTTP协议模拟的框架成熟,且平台无限制,实际应用最为广泛。操作URL的Python模块第三方库,需要另安装安装:pipinstallrequests导入模块:importrequestsrequests自有库,免安装导入模块:importurllib.requesturllibRequest库不带参数发送请求带参数发送请求/search.jsp?wbtreeid=1001urllib库urllib.request请求模块urllib.error异常处理模块urllib.parseurl解析模块urllib.robotparserrobots.txt解析模块4个模块注意:在Python3以后的版本中,urllib2这个模块已经不单独存在(也就是说当你importurllib2时,系统提示你没这个模块),urllib2被合并到了urllib中,叫做urllib.request和urllib.error本课程基于Python3介绍。urllib库不带参数发送请求带参数发送请求/search.jsp?wbtreeid=1001浏览器的模拟-构建Headers未能成功伪装成浏览器的正常访问行为,将被反爬虫拦截选择正确的请求报文中的Headers参数方法1、任意打开一个网页,比如打开。2、按F12,会出现一个窗口。切换到Network标签页。3、然后单击网页中的“百度一下”,即让网页发生一个动作。4、将界面右上方的标签切换到“Headers”中,即可以看到了对应的头信息,就可以找到User-Agent字样的一串信息。5、复制User-Agent数据。浏览器的模拟-构建Headers思考:登陆用户的请求报文如何模拟?解决方案:1、使用真实场景下的headers参数,查询到正确的Cookie或session值。2、在请求报文的头部信息中,完善headers的各类参数。浏览器的模拟-构建Headers构造采集请求-习题讲解————数据采集1.在HTTP协议的“请求/响应”交互模型中,以下说法错误的是()。A.客户机在发送请求之前需要主动与服务器建立连接。B.服务器无法主动向客户机发起连接。C.服务器无法向客户机发送数据。D.以上都错误。2.HTTP请求报文中,可以不包含的是()A.请求行B.请求头C.请求头后的空行D.请求数据3.HTTP协议的报文有()两种类型A.

发送报文和接收报文B.

请求报文和响应报文C.

报文头和报文体D.

实体报文和控制报文。4.通过程序构造数据采集请求,本质上是()。A.通过程序实现点击页面按钮,获得数据。B.通过程序构造HTTP请求,获得响应报文。C.通过程序操作浏览器,读取浏览器返回数据。D.通过程序抓包,读取数据包中的数据。5.通过程序构造采集请求,不能使用哪种语言()A.

.NETB.

C语言C.

JavaScriptD.

Python6.构造请求报文中的Headers的作用是A.使得构造出的请求报文与真实浏览器的请求报文一致,防止服务器反爬虫。B.HTTP请求协议规定的内容,参数内容无要求C.与服务器协商返回的数据格式D.用于解析响应报文。数

集基于Xpath的数据爬取——豆瓣电影TOP250为例目录01案例需求及源码结构分析02Xpath插件获取表达式

03爬取功能划分

04爬取代码实现

需求:爬取豆瓣电影评分TOP250页面的电影名字、电影介绍链接、电影评分等信息。URL:

/top250案例需求及源码结构分析多页面的分析处理:分析分页的链接可以发现,每一页有25条电影记录,每页的链接为改变值是start参数例如第二页实际URL:/top250?start=25&filter=案例需求及源码结构分析Xpath插件获取表达式通过浏览器安装好的Xpath插件,可获得到如下信息:电影节点集合://*[@id="content"]/div/div[1]/ol/li电影名字:div/div[2]/div[1]/a/span[1]/text()简介链接:div/div[2]/div[2]/div/span[2]/text()评分:div/div[2]/div[1]/a/@href爬取功能划分从html文档中,解析出需求信息网页解析从服务器获取html文档获取html文档依次访问所有页面多页面读取调度爬取代码实现多页面读取调度爬取代码实现获取html文档爬取代码实现解析网页内容Xpath插件安装使用数据采集XPathhelper是一款Chrome浏览器的开发者插件,安装了XPathhelper后就能轻松获取HTML元素的XPath表达式,程序员就再也不需要通过搜索html源代码,定位一些id去找到对应的位置去解析网页了。Xpathhelper插件1、下载Xpath插件

/eliasdorneles/xpath_helperXpathhelper插件下载安装2、解压至桌面3、打开浏览器的“扩展程序”,以谷歌浏览器为例地址栏输入:chrome://extensions/Xpathhelper插件下载安装4、点击”加载已解压的扩展程序“,找到刚刚解压的文件夹,确定加载。其它浏览器也可在应用商店搜索安装Xpathhelper插件下载安装Xpathhelper插件使用

第一步:右键需要定位的元素,选择检查,进入”开发者工具“,定位到源代码位置

第二步:右键要提取的元素或者文本,选择”Copy“>>“CopyXpath”,获得该元素的Xpath表达式复制结果://*[@id="syncad_0"]/ul[1]/li[4]/aXpath简介数据采集Xpath简介

XPath,全称XMLPathLanguage,即XML路径语言,它是一门在XML文档中查找信息的语言。最初是用来搜寻XML文档的,但同样适用于HTML文档的搜索。

所以,在做爬虫时可以使用XPath做相应的数据抽取。

它还提供了超过100个内建函数,用于字符串、数值、时间的匹配以及节点、序列的处理等,几乎所有想要定位的节点都可以用XPath来选择。

官方文档:/TR/xpath/Xpath常用规则示例

//span[@id="tab-nav"]解释:

选取当前节点下的后代节点中,一个id属性值为“tab-nav”的span标签节点。表达式描述nodename选取此节点的所有子节点/从当前节点选区直接子节点//从当前节点选取子孙节点.选取当前节点..选取当前节点的父节点@选取属性Xpath通配符使用通配符描述*匹配任何元素节点。@*匹配任何属性节点。node()匹配任何类型的节点。示例

//*[@class="item-color"]/a解释:

选取文档中所有包含class=“item-color”的节点下的直接子节点超链接标签。1.

starts-with函数例子://div[starts-with(@class,“test”)]2contains函数例子://div[contains(@id,”test“)]3text()函数例子://div[@id=“test”]/text()4and例子://div[contains(@id,“test”)andcontains(@id,“title”)]函数作用starts-with()获取以xxx开头的元素contains()获取包含xxx的元素text()提取节点的文本and逻辑与的关系Xpath常用函数Xpath使用案例1、选取class=“grid_view”的ol节点//ol[@class=”grid_view”]2、选取li节点下的所有的后代超链接标签节点//li//a3、提取class=“info”的节点下后代节点a标签中的超链接属性值//div[@class=”info”]//a/@href4、提取包含属性property="v:average"节点中的文本(

评分)//span[@property="v:average"]/text()日志数据采集-习题讲解数据采集1.关于Filebeat,说法正确的是()。A.Filebeat只能读取日志文件。B.一个输入端只能监测一个日志文件。C.Filebeat读取的数据,可以输出到多个输出端。D.在监测日志文件的时候,读取整个文件数据。2.启动Filebeat的命令是()A.

./filebeatB.

./filebeat-eC.

./filebeat-e-fconf.ymlD.

./filebeat-e-cconf.yml3.现需要通过Filebeat监测系统运行的所有日志,请在如下配置代码中,填补输入端的配置参数filebeat.inputs:-type:_____________

enabled:_____________

paths:-/var/log/_____________

logtrue*.log4.Logstash不包含以下哪个模块()。A.Inputs。B.Process。C.Filters。D.Outputs。5.logstash的配置文件的后缀名是()A.

.ymlB.

.confC.

.stashD.

.ls6、现需将Filebeat的输出,作为Logstash组件的输入,请写出Logstash配置文件中的配置代码。input{ beats{ port=>5044

#filebeat作为输入源 }}Scrapy介绍————数据采集Scrapy简介

Scrapy是基于Python实现的一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛,常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。

Scrapy使用了Twisted异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。

用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。核心组件核心组件ScrapyEngine(引擎)Scheduler(调度器)Spider(爬虫)ItemPipeline(管道)Downloader(下载器)SpiderMiddlewares(Spider中间件)DownloaderMiddlewares(下载中间件)ScrapyEngine(引擎)

负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递,协调各组件工作。Scheduler(调度器)

负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,将队头请求提交给引擎。Spider(爬虫)

负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器).

ItemPipeline(管道)

负责处理Spider中获取到的Item,并进行进行后期处理,进行详细分析、过滤、存储,比如存储至数据库中。Downloader(下载器)

负责下载ScrapyEngine

(引擎)发送的所有Requests请求,并将其获取到的Responses交还给引擎,由引擎交给Spider来处理.SpiderMiddlewares(Spider中间件)

一个可以自定扩展和操作引擎和Spider中间通信的功能组件。可以添加代码来处理发送给Spiders的response及spider产生的item和request。

DownloaderMiddlewares(下载中间件)

下载器中间件是引擎和下载器之间通信的中间件,在这个中间件中我们可以设置代理,更换请求头等来达到反复爬虫的目的,实现自定义扩展下载功能。工作流程①②③④⑤⑥⑦⑧⑨1、引擎向爬虫询问要爬取的第一个URL地址2、爬虫告知引擎要爬取的URL地址3、引擎根据URL,构建request请求,并告诉调度器将待处理的请求加入队列,进行调度4、调度器取出队列中对头的Requset请求,交给引擎。5、引擎将由调度器发来的Request请求发给下载器6、下载器收到引擎发的下载请求,完成下载内容,并形成Response响应反馈给引擎7、引擎收到下载器的响应数据后,将响应数据交给爬虫8、爬虫收到引擎给的响应数据后,解析需要的数据,组成Item数据,交付给引擎。9、引擎收到爬虫解析好的Item数据,传送给管道,管道收到Item数据后,等待命令存储数据。Scrapy环境搭建————数据采集Scrapy安装在本机已安装了python的基础上1、打开命令提示符窗口:

windows+r,输入cmd回车进入2、有时pip版本过于老旧不能使用,需要升级pip版本,输入命令:

pipinstall--upgradepip3、升级好pip版本后,输入命令安装scrapy

pipinstallScrapy此方式可以自动安装,但可能存在安装失败或者下载失败的可能Scrapy安装

如果使用上述安装方式出错了,一般是因为网络问题导致依赖模块安装失败解决方案如下:

手动在官网下载缺失的whl文件:

/~gohlke/pythonlibs/

例如:提示缺失lxml模块,则在官网页面中Ctrl+F搜索lxml定位到lxml的whl文件所在位置,根据本机电脑环境,选择对应的版本下载。下载好对应版本后,通过命令安装

pipinstall存放路径\****.whl例如放桌面:pipinstallC:\Users\Administrator\lxml-4.6.2-cp36-cp36m-win_amd64.whl手动安装缺失模块如何选择对应的版本下载?以lxml-4.6.2-cp36-cp36m-win_amd64.whl为例4.6.2代表lxml的版本号cp36代表的是Python3.6,同理cp37就是Python3.7了amd64代表的是Python是64位的,win32就是32位的Python

假如本机的python版本是Python3.6,64位版本,操作系统是window10,64位操作系统。

则选择lxml-4.6.2-cp36-cp36m-win_amd64.whl安装验证打开命令提示符窗口,输入scrapyversion

如果出现最新的版本号,则表示按照成功。

假设,数据爬取项目的存放目录为:

E:\TeachProjects\PythonProjects\在命令提示符窗口,切换至该目录下,输入命令:

scrapystartprojectMyfirstScrapy

通过dir命令,可以看到,在当前目录下已经创建了MyfirstScrapy文件夹,该文件夹即是Scrapy工程文件夹,数据采集代码编写即在此文件夹中实施。Sc

温馨提示

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

评论

0/150

提交评论