总结:大数据采集的流程是什么,主要分为哪几步?「建议收藏」

优采云 发布时间: 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:

  转载于:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线