总结:大数据采集的流程是什么,主要分为哪几步?「建议收藏」
优采云 发布时间: 2022-10-14 06:13总结:大数据采集的流程是什么,主要分为哪几步?「建议收藏」
大数据采集的流程是什么,主要的步骤是什么?《推荐合集》 1.什么是爬虫,爬虫能做什么样的爬虫,即网络爬虫。你可以把它理解为在互联网上爬行的蜘蛛。互联网就像一张大网,爬虫在这张网上爬行。一只爬行的蜘蛛,如果它遇到一个资源,它就会去抓取它。例如,它正在抓取网页。在这个网页中,它找到了一条路,这条路实际上是一个指向网页的超链接。然后它可以爬到另一个网站来获取数据。某个网站 的内容或爬虫可以爬取的应用程序以提取有用价值的内容。还可以模拟用户在浏览器或App应用上的操作...
大家好,我是建筑师,一个会写代码,会背诗的建筑师。今天我们来说说大数据采集的流程,主要有哪些步骤?《推荐采集》,希望能帮助大家提高!!!
一、什么是爬行动物,爬行动物能做什么
爬虫,即网络爬虫,可以理解为在互联网上爬行的蜘蛛。互联网就像一张大网,爬虫就是在这张网上四处爬行的蜘蛛。如果遇到资源,就会被抢。例如,它正在抓取网页。在这个网页中,它找到了一条路,这条路实际上是一个指向网页的超链接。然后它可以爬到另一个网站来获取数据。
某个网站 的内容或爬虫可以爬取的应用程序以提取有用价值的内容。还可以模拟用户在浏览器或App应用上的操作,实现程序的自动化。以下行为都可以通过爬虫实现:
咨询报告(咨询服务行业)
抢票神器
投票神器
预测(股市预测、票房预测)
国民情绪分析
社交网络
政府部门舆情监测
2、浏览网页的流程和网址
一、用户浏览网页的过程
在用户浏览网页的过程中,我们可能会看到很多漂亮的图片,比如我们会看到几张图片和百度搜索框,这个过程其实就是用户输入网址后,经过DNS服务器,找到服务器主机, 向服务器发送请求。服务器解析后,将HTML、JS、CSS等文件发送到用户的浏览器。浏览器解析后,用户可以看到各种图片。
因此,用户看到的网页本质上是由 HTML 代码组成的,爬虫爬取这些内容。通过对这些HTML代码进行分析和过滤,实现图片、文字等资源的获取。
三、网址的含义
URL,即Uniform Resource Locator,也就是我们所说的网站,Uniform Resource Locator是可以从互联网上获取的资源的位置和访问方式的简明表示,是互联网上标准资源的地址. Internet 上的每个文件都有一个唯一的 URL,其中收录指示文件位置以及浏览器应该如何处理它的信息。
URL的格式由三部分组成:
①第一部分是协议(或服务模式)。
②第二部分是存储资源的主机的IP地址(有时还包括端口号)。
③ 第三部分是宿主资源的具体地址,如目录、文件名等。
爬虫爬取数据时,必须有目标URL才能获取数据。因此,它是爬虫获取数据的基本依据。准确理解其含义对爬虫的学习很有帮助。
三、爬行动物的基本原理和过程
一、基本原则
爬虫是模拟用户对浏览器或App应用程序的操作,并将操作过程自动化的程序。它由以下4个基本过程组成。
(1) 发起请求
通过HTTP库向目标站点发起请求,即发送Request,请求中可以收录额外的headers等信息,等待服务器响应
(2) 获取响应内容
如果服务器能正常响应,就会得到一个Response。Response的内容就是要获取的页面的内容。类型可以是 HTML、Json 字符串、二进制数据(图片或视频)等。
(3) 解析内容
获取的内容可以是HTML,可以用正则表达式和页面解析库解析,也可以是Json,可以直接转成Json对象解析,也可以是二进制数据,可以保存或进一步处理
(4) 保存数据
以多种形式保存,可以保存为文本,也可以保存到数据库,或者以特定格式保存文件
2.过程
而当我们在浏览器中输入一个url并回车时,后台会发生什么?说你输入
简而言之,此过程分为以下四个步骤:
(1)找到域名对应的IP地址。
浏览器首先访问的是DNS(DomainNameSystem,域名系统),dns的主要工作就是将域名转换成对应的IP地址
(2) 向该IP对应的服务器发送请求。
(3) 服务器响应请求,发回网页内容。
(4) 浏览器显示网页内容。
网络爬虫需要做的,简单来说就是实现浏览器的功能。通过指定url,直接返回用户需要的数据,无需手动操作浏览器一步步获取。
四、什么是Request、Response
浏览器向 URL 所在的服务器发送消息。这个过程称为HTPPRequest
服务器收到浏览器发送的消息后,可以根据浏览器发送的消息内容进行相应的处理,然后将消息发送回浏览器。这个过程是HTTPResponse
浏览器收到服务器的Response信息后,会对信息进行相应的处理,然后显示
请求中收录什么?
请求方法
主要有:常用的GET/POST两种,还有HEAD/PUT/DELETE/OPTIONS
GET 和 POST 的区别在于请求的数据 GET 在 url 中,而 POST 存储在 header 中
GET:向指定资源发出“显示”请求。使用 GET 方法应该只用于读取数据,而不应该用于产生“副作用”的操作,例如在 WebApplication 中。原因之一是 GET 可能被网络蜘蛛等任意访问。
POST:向指定资源提交数据,并请求服务器处理(如提交表单或上传文件)。数据收录在请求文本中。此请求可能会创建新资源或修改现有资源,或两者兼而有之。
HEAD:和GET方法一样,是对服务器的指定资源的请求。只是服务器不会返回资源的文本部分。它的优点是使用这种方法可以获取“有关资源的信息”(元信息或元数据),而无需传输整个内容。
PUT:将其最新内容上传到指定的资源位置。
OPTIONS:此方法使服务器能够返回资源支持的所有 HTTP 请求方法。使用 '*' 代替资源名称,并向 Web 服务器发送 OPTIONS 请求,以测试服务器功能是否正常工作。
DELETE:请求服务器删除Request-URI标识的资源。
请求网址
URL,即Uniform Resource Locator,也就是我们所说的网站,Uniform Resource Locator是可以从互联网上获取的资源的位置和访问方式的简明表示,是互联网上标准资源的地址. Internet 上的每个文件都有一个唯一的 URL,其中收录指示文件位置以及浏览器应该如何处理它的信息。
URL的格式由三部分组成:
第一部分是协议(或服务模式)。
第二部分是存储资源的主机的 IP 地址(有时是端口号)。
第三部分是宿主资源的具体地址,如目录、文件名等。
爬虫在爬取数据时,必须有目标URL才能获取数据。因此,它是爬虫获取数据的基本依据。
请求头
收录请求的头部信息,如User-Agent、Host、Cookies等信息。下图显示了请求百度时所有的请求头信息参数。
请求正文
请求是携带的数据,比如提交表单数据时的表单数据(POST)
响应中收录的内容
所有 HTTP 响应的第一行是状态行,后跟当前 HTTP 版本号、3 位状态代码和描述状态的短语,以空格分隔。
响应状态
响应状态有多种,如:200表示成功,301跳转,404页面未找到,502服务器错误
1 条消息 - 服务器已收到请求,继续处理
2 Success - 请求被服务器成功接收、理解和接受
3 重定向 - 完成此请求需要后续操作
4 请求错误 - 请求收录词法错误或无法执行
5 Server Error - 服务端处理正确请求时出错 常见代码: 200OK 请求成功 400BadRequest 客户端请求有语法错误,服务器无法理解 401Unauthorized 请求未授权,此状态码必须为结合 WWW-Authenticate 头域 一起使用 403Forbidden 服务器收到请求,但拒绝提供服务 404NotFound 请求的资源不存在,例如:输入了错误的URL Transfer 302 Target Temporarily Transferred
响应头
如内容类型、类型长度、服务器信息、设置cookies,如下图
响应体
最重要的部分,包括请求资源的内容,比如网页HTML、图片、二进制数据等。
5、可以爬取什么样的数据
网页文本:如HTML文档、Json格式文本等。
图片:将得到的二进制文件保存为图片格式
视频:也是二进制
其他:只要你要求,你就能得到
6.如何解析数据
直接加工
json解析
正则表达式处理
BeautifulSoup 解析与处理
PyQuery解析处理
XPath 解析处理
关于抓取的页面数据与浏览器中看到的数据的区别
出现这种情况是因为网站中的很多数据都是通过js和ajax动态加载的,所以直接通过get请求得到的页面和浏览器显示的不一样。
7、js渲染的问题如何解决?
分析ajax
硒/网络驱动程序
溅
PyV8,幽灵.py
如何保存数据
文本:纯文本、Json、Xml等。
关系型数据库:mysql、oracle、sqlserver等结构化数据库。
非关系型数据库:MongoDB、Redis等键值存储
人工智能、大数据、云计算和物联网的未来发展值得关注。都是前沿行业。多智能时代侧重于人工智能和大数据的介绍和知识。这里有一些高质量的文章给你:
1、大数据分析的核心技术有哪些?
2、搭建企业大数据分析平台的主要步骤是什么?
3. 数据科学、数据分析和机器学习的本质区别是什么?
4.什么是数据分析,如何完善数据分析的知识体系
5.什么是数据分析?如何从零开始学习数据分析?
多元智能时代——人工智能与大数据学习概论网站|人工智能、大数据、物联网、云计算的学习交流网站
我想你会喜欢:
总结:Java性能分析神器-JProfiler详解(一)(转)
前段时间在为公司的项目做性能分析,从简单的Log分析(GC日志、postgrep日志、hibernatestatitistic),到通过AOP采集软件运行数据,再到PET测试。,但总感觉像是在原创时代工作,不可能以简单流畅、极其清晰的方式获得想要的结果。花了一些时间整理学习了之前用过的各种jvm调优和内存分析的工具,包括jps、jstack、jmap、jconsole,JDK自带的,还有IBM的HeapAnalyzer等。虽然这些工具都提供了很多的功能,但它的可用性和便利性远没有 IntelliJ 用于 Java 开发的水平。偶然在云栖社区发现有人推荐Jprofiler,安装了版本使用,发现是神器,特此推荐给大家。首先,我声明这个软件是用于商业用途的。网上有很多关于 lisence 的帖子。我会在这里转发,但我绝对不会推荐大家使用破解版!
#36573-fdkscp15axjj6#25257
#5481-ucjn4a16rvd98#6038
#99016-hli5ay1ylizjj#27215
#40775-3wle0g1uin5c1#0674
#7009-14frku31ynzpfr#20176
#49604-1jfe58we9gyb6#5814
#25531-1qcev4yintqkj#23927
#96496-1qsu1lb1jz7g8w#23479
#20948-11amlvg181cw0p#171159
然后,转到云栖上的一个文章,然后慢慢开始我们的Jprofiler之旅。
1.什么是JProfiler
JProfiler 是由 ej-technologies GmbH 开发的性能瓶颈分析工具(该公司还开发部署工具)。
其特点:
2.数据采集
Q1。既然 JProfiler 是一个性能瓶颈分析工具,那么这些分析的相关数据是从哪里来的呢?
Q2。JProfiler 如何采集和显示这些数据?
(图2)
A1。分析的数据主要来自以下两部分
1.部分分析接口来自jvm**JVMTI**(JVM Tool Interface),JDK必须>=1.6
JVMTI 是一个基于事件的系统。分析代理库可以为不同的事件注册处理函数。然后它可以启用或禁用选定的事件
例如:对象生命周期、线程生命周期等信息
2.部分来自instruments类(可以理解为类的重写,增加了JProfiler相关的统计功能)
例如:方法执行时间、次数、方法栈等信息
A2。数据采集原理如图2所示
1.用户在JProfiler GUI中发出监控命令(通常通过点击按钮)
2. JProfiler GUI JVM通过socket(默认端口8849)向被分析jvm中的JProfile Agent发送指令。
3. JProfiler Agent(如果不了解Agent,请看文章Part 3“启动模式”)收到指令后,将指令转换为相关事件或需要监控的指令,在JVMTI 或者直接让JProfiler Agent JVMTI 执行一个功能(比如dump jvm内存)
4、JVMTI根据注册的事件采集当前jvm的信息。例如:线程的生命周期;jvm的生命周期;类的生命周期;对象实例的生命周期;堆内存的实时信息等
5、JProfiler Agent将采集好的信息保存在**memory**中,并按照一定的规则进行统计(如果所有数据都发送到JProfiler GUI,对被分析的应用网络会有比较大的影响)
6. 返回 JProfiler GUI Socket。
7. JProfiler GUI Socket将接收到的信息返回给JProfiler GUI Render
8. JProfiler GUI Render 渲染最终显示效果
3.data采集方法及启动方式
A1。JProfier采集 方法分为两种:Sampling (sample采集) 和 Instrumentation
注意:JProfiler 本身并没有指明 采集 类型的数据,这里的 采集 类型是 采集 类型用于方法调用。因为JProfiler的大部分核心功能都依赖于方法调用采集的数据,所以可以直接认为是JProfiler的数据采集类型。
A2:启动模式:
四。JProfiler 核心概念
过滤器:需要分析什么类。有两种类型的过滤器收录和不收录。
(图4)
Profiling Settings: Receipt 采集 strategy: Sampling and Instrumentation,一些数据采集细节可以自定义。
(图5)
Triggers:一般用在**offline**模式下,告诉JProfiler Agent什么时候触发什么行为来采集指定信息。
(图 6)
实时内存:关于类/类实例的信息。比如对象的数量和大小,对象创建的方法执行栈,对象创建的热点。
(图 7)
Heap walker:静态分析一定时间内采集到的内存对象信息,功能强大,好用。传出引用、传入引用、最大对象等。
(图 8)
CPU视图:CPU消耗分布和时间(cpu时间或运行时间);方法执行图;方法执行统计(最大值、最小值、平均运行时间等)
(图 9)
线程:当前jvm所有线程的运行状态,持有锁的线程的状态,可以dump线程。
(图 10)
Monitors & locks:所有线程持有锁和锁信息
(图 11)
遥测:趋势图(遥测视图),包括堆、线程、gc、类等。
五、实践
为了方便实践,使用JProfiler8自带的一个例子来帮助理解上述相关概念。
JProfiler 自带的例子如下: 模拟内存泄漏和线程阻塞的场景:
具体源码参考:/jprofiler install path/demo/bezier
(图 12)
(图13Leak Memory模拟内存泄漏,模拟阻塞模拟线程间锁的阻塞)
A1。首先我们来分析一下内存泄露的场景:(勾选图13中的Leak Memory来模拟内存泄露)
1、在**Telemetries->Memory**视图中,会看到下图的场景(查看过程中可以间隔执行Run GC功能):见下图蓝色区域,老年代 gc (**trough**) 后内存大小缓慢增加(理想情况下,这个值应该是稳定的)
(图 14)
点击Live memory->Recorded Objects中的**record allocation data**按钮,开始统计一段时间内创建的对象信息。执行一次**Run GC**后,查看当前对象信息的大小,点击工具栏中的**Mark Current**按钮(其实就是标记当前对象个数。执行一次Run GC,然后继续观察;执行一次Run GC,然后继续观察....最后看看哪些对象在不断GC,数量一直在增加,最后看到的信息可能类似于下图
(图15绿色为标注前的数量,红色为标注后的增量)
分析刚刚记录在Heap walker中的对象信息
(图 16)
(图 17)
点击上图中实例最多的类,右键**Use Selected Instances->Reference->Incoming Reference**。
发现Long数据最终存放在**bezier.BeierAnim.leakMap**中。
(图 18)
在 Allocations 选项卡中,右键单击其中一种方法以查看特定的源代码信息。
(图 19)
【注】:此时问题已经很清楚了。明白为什么图17的实例数一样,为什么fullgc后内存无法回收(老区的一个对象leakMap,put的信息也会进入老区,如果leakMap无法回收,地图中收录的对象无法回收)。
A2。模拟线程阻塞的场景(勾选图13中的模拟阻塞,模拟线程间锁的阻塞)
为了方便区分线程,我将Demo中BezierAnim.java的L236的线程命名为test
public void start() {
thread = new Thread(this, "test"); thread.setPriority(Thread.MIN_PRIORITY); thread.start(); }
正常情况下,如下图所示
(图 20)
在Demo中勾选“模拟阻塞”选项后,如下图(注意下图中的状态图标),测试线程的阻塞状态明显增加。
(图 21)
观察**Monitors & locks->Monitor History**一段时间后,你会发现出现锁的情况有4种。
首先:
AWT-EventQueue-0 线程持有对象锁,处于等待状态。
下图代码表示Demo.block方法调用了object.wait方法。这还是比较容易理解的。
(图 22)
第二:
AWT-EventQueue-0 持有 bezier.BezierAnim$Demo 实例上的锁,测试线程等待线程释放它。
注意下图底部的源代码。这个锁的原因是Demo的blcok方法在AWT和测试线程中。
将被执行并且方法被同步。
(图 23)
第三和第四:
测试线程会继续向 Event Dispatching Thread 提交任务,从而导致对 java.awt.EventQueue 对象锁的竞争。
提交任务的方式如下代码:repaint()和EventQueue.invokeLater
public void run() { Thread me = Thread.currentThread(); while (thread == me) { repaint(); if (block) { block(false); } try { Thread.sleep(10); } catch (Exception e) { break; } EventQueue.invokeLater(new Runnable() { @Override public void run() { onEDTMethod(); } }); } thread = null; }
(图 24)
6. 最佳实践 JProfiler 会给出一些特殊操作的提示。这时,最好仔细阅读说明。“标记当前”功能在某些场景下非常有效。Heap walker 一般静态分析 Live memory->Recorder objects 中的对象信息,这些信息可能会被 GC 回收,导致 Heap walker 中什么也不显示。这种现象是正常的。您可以在工具栏中的“开始录制”工具栏中配置一次采集的信息。Filter 中的 include 和 exclude 是按顺序排列的。请使用下图左下方的“显示过滤树”来验证顺序。
(图 25) 七。参考 JProfiler 助手:
JVMTI:
转载于: