大数据中数据采集都有哪些方式?

2020-08-31 09:37发布

5条回答
我是大脸猫
2楼 · 2020-08-31 09:41

一、什么是爬虫,爬虫能做什么

爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来。比如它在抓取一个网页,在这个网中他发现了一条道路,其实就是指向网页的超链接,那么它就可以爬到另一张网上来获取数据。

爬虫可以抓取的某个网站或者某个应用的内容,提取有用的价值。也可以模拟用户在浏览器或者App应用上的操作,实现自动化的程序。以下行为都可以用爬虫实现:

咨询报告(咨询服务行业)

抢票神器

投票神器

预测(股市预测、票房预测)

国民情感分析

社交关系网络

政府部门舆情监控

二、浏览网页的过程与URL

1、用户浏览网页过程

在用户浏览网页的过程中,我们可能会看到许多好看的图片,比如http://image.baidu.com/,我们会看到几张的图片以及百度搜索框,这个过程其实就是用户输入网址之后,经过DNS服务器,找到服务器主机,向服务器发出一个请求,服务器经过解析之后,发送给用户的浏览器HTML、JS、CSS等文件,浏览器解析出来,用户便可以看到形形色色的图片了。

因此,用户看到的网页实质是由HTML代码构成的,爬虫爬来的便是这些内容,通过分析和过滤这些HTML代码,实现对图片、文字等资源的获取。

3.URL的含义

URL,即统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

URL的格式由三部分组成:

①第一部分是协议(或称为服务方式)。

②第二部分是存有该资源的主机IP地址(有时也包括端口号)。

③第三部分是主机资源的具体地址,如目录和文件名等。

爬虫爬取数据时必须要有一个目标的URL才可以获取数据,因此,它是爬虫获取数据的基本依据,准确理解它的含义对爬虫学习有很大帮助。

三、爬虫的基本原理与过程

1、基本原理

爬虫是模拟用户在浏览器或者App应用上的操作,把操作的过程、实现自动化的程序。由以下4个基本流程。

(1)发起请求

通过HTTP库向目标站点发起请求,也就是发送一个Request,请求可以包含额外的header等信息,等待服务器响应

(2)获取响应内容

如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能是HTML,Json字符串,二进制数据(图片或者视频)等类型

(3)解析内容

得到的内容可能是HTML,可以用正则表达式,页面解析库进行解析,可能是Json,可以直接转换为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理

(4)保存数据

保存形式多样,可以存为文本,也可以保存到数据库,或者保存特定格式的文件

2、过程

而当我们在浏览器中输入一个url后回车,后台会发生什么?比如说你输入https://www.shsxt.com

简单来说这段过程发生了以下四个步骤:

(1)查找域名对应的IP地址。

浏览器首先访问的是DNS(DomainNameSystem,域名系统),dns的主要工作就是把域名转换成相应的IP地址

(2)向IP对应的服务器发送请求。

(3)服务器响应请求,发回网页内容。
  (4)浏览器显示网页内容。

网络爬虫要做的,简单来说,就是实现浏览器的功能。通过指定url,直接返回给用户所需要的数据,而不需要一步步人工去操纵浏览器获取。

四、什么是Request,Response

浏览器发送消息给网址所在的服务器,这个过程就叫做HTPPRequest

服务器收到浏览器发送的消息后,能够根据浏览器发送消息的内容,做相应的处理,然后把消息回传给浏览器,这个过程就是HTTPResponse

浏览器收到服务器的Response信息后,会对信息进行相应的处理,然后展示

Request中包含什么?

请求方式

主要有:GET/POST两种类型常用,另外还有HEAD/PUT/DELETE/OPTIONS

GET和POST的区别就是:请求的数据GET是在url中,POST则是存放在头部

GET:向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在WebApplication中。其中一个原因是GET可能会被网络蜘蛛等随意访问

POST:向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。

HEAD:与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。

PUT:向指定资源位置上传其最新内容。

OPTIONS:这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用’*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。

DELETE:请求服务器删除Request-URI所标识的资源。

请求URL

URL,即统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

URL的格式由三个部分组成:

第一部分是协议(或称为服务方式)。

第二部分是存有该资源的主机IP地址(有时也包括端口号)。

第三部分是主机资源的具体地址,如目录和文件名等。

爬虫爬取数据时必须要有一个目标的URL才可以获取数据,因此,它是爬虫获取数据的基本依据。

请求头

包含请求时的头部信息,如User-Agent,Host,Cookies等信息,下图是请求请求百度时,所有的请求头部信息参数

请求体

请求是携带的数据,如提交表单数据时候的表单数据(POST)

Response中包含了什么

所有HTTP响应的第一行都是状态行,依次是当前HTTP版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。

响应状态

有多种响应状态,如:200代表成功,301跳转,404找不到页面,502服务器错误

1消息——请求已被服务器接收,继续处理

2成功——请求已成功被服务器接收、理解、并接受

3重定向——需要后续操作才能完成这一请求

4请求错误——请求含有词法错误或者无法被执行
  5服务器错误——服务器在处理某个正确请求时发生错误常见代码:200OK请求成功400BadRequest客户端请求有语法错误,不能被服务器所理解401Unauthorized请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用403Forbidden服务器收到请求,但是拒绝提供服务404NotFound请求资源不存在,eg:输入了错误的URL500InternalServerError服务器发生不可预期的错误503ServerUnavailable服务器当前不能处理客户端的请求,一段时间后可能恢复正常301目标永久性转移302目标暂时性转移

响应头

如内容类型,类型的长度,服务器信息,设置Cookie,如下图

响应体

最主要的部分,包含请求资源的内容,如网页HTMl,图片,二进制数据等

五、能爬取什么样的数据

网页文本:如HTML文档,Json格式化文本等

图片:获取到的是二进制文件,保存为图片格式

视频:同样是二进制文件

其他:只要请求到的,都可以获取

六、如何解析数据

直接处理

Json解析

正则表达式处理

BeautifulSoup解析处理

PyQuery解析处理

XPath解析处理

关于抓取的页面数据和浏览器里看到的不一样的问题

出现这种情况是因为,很多网站中的数据都是通过js,ajax动态加载的,所以直接通过get请求获取的页面和浏览器显示的不同。

七、如何解决js渲染的问题?

分析ajax

Selenium/webdriver

Splash

PyV8,Ghost.py

怎样保存数据

文本:纯文本,Json,Xml等

关系型数据库:如mysql,oracle,sqlserver等结构化数据库

非关系型数据库:MongoDB,Redis等key-value形式存储
人工智能、大数据、云计算和物联网的未来发展值得重视,均为前沿产业,多智时代专注于人工智能和大数据的入门和科谱,在此为你推荐几篇优质好文:
1.大数据分析,主要有哪些核心技术?
http://www.duozhishidai.com/article-1938-1.html
2.构建一个企业的大数据分析平台 ,主要分为哪几步?
http://www.duozhishidai.com/article-8017-1.html
3.数据科学,数据分析和机器学习之间,有什么本质区别?
http://www.duozhishidai.com/article-7892-1.html
4.数据分析是什么,如何完善数据分析知识体系
http://www.duozhishidai.com/article-7743-1.html
5.数据分析是什么?如何从零开始学习数据分析?
http://www.duozhishidai.com/article-7653-1.html



文章来源:https://blog.csdn.net/zhinengxuexi/article/details/88743128

小猪仔
3楼 · 2021-02-07 09:47

1、离线采集

工具:ETL;

在数据仓库的语境下,ETL基本上就是数据采集的代表,包括数据的提取(Extract)、转换(Transform)和加载(Load)。在转换的过程中,需要针对具体的业务场景对数据进行治理,例如进行非法数据监测与过滤、格式转换与数据规范化、数据替换、保证数据完整性等。

2、实时采集:

工具:Flume/Kafka;

实时采集主要用在考虑流处理的业务场景,比如,用于记录数据源的执行的各种操作活动,比如网络监控的流量管理、金融应用的股票记账和 web 服务器记录的用户访问行为。在流处理场景,数据采集会成为Kafka的消费者,就像一个水坝一般将上游源源不断的数据拦截住,然后根据业务场景做对应的处理(例如去重、去噪、中间计算等),之后再写入到对应的数据存储中。这个过程类似传统的ETL,但它是流式的处理方式,而非定时的批处理Job,些工具均采用分布式架构,能满足每秒数百MB的日志数据采集和传输需求

3、互联网采集:

工具:Crawler, DPI等;

Scribe是Facebook开发的数据(日志)收集系统。又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,它支持图片、音频、视频等文件或附件的采集。

爬虫

除了网络中包含的内容之外,对于网络流量的采集可以使用DPI或DFI等带宽管理技术进行处理。

4、其他数据采集方法

对于企业生产经营数据上的客户数据,财务数据等保密性要求较高的数据,可以通过与数据技术服务商合作,使用特定系统接口等相关方式采集数据。比如八度云计算的数企BDSaaS,无论是数据采集技术、BI数据分析,还是数据的安全性和保密性,都做得很好。


爱梦 - 拿来吧你
4楼 · 2021-10-27 09:25

通过系统日志采集大数据

用于系统日志采集的工具,目前使用最广泛的有:Hadoop 的Chukwa、ApacheFlumeAFacebook的Scribe和LinkedIn的Kafka等。这里主要学习Flume。

Flume是一个高可靠的分布式采集、聚合和传输系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据,同时对数据进行简单处理,并写到诸如文本、HDFS这些接受方中。

Flume的核心其实就是把数据从数据源收集过来,再将收集到的数据送到指定的目的地……

通过网络采集大数据

网络采集是指通过网络爬虫或网站公开API等方式,从网站上获取大数据信息,该方法可以将非结构化数据从网页中抽取出来,将其存储为统一的本地数据文件,并以结构化的方式存储。它支持图片、音频、视频等文件或附件的采集。

一般来说,网络爬虫工具基本可以分类3类:分布式网络爬虫工具(Nutch)、Java网络爬虫工具(Crawler4j、WebMagic、WebCollector)、非Java网络爬虫工具( Scrapy)。


慢半拍
5楼 · 2021-10-27 15:11

一、软件接口方式

各个软件厂商提供数据接口,实现数据采集汇聚。

实现过程:

· 协调多方软件厂商工程师到场,了解所有系统业务流程以及数据库相关的表结构设计等,细节推敲,确定可行性方案;

· 编码

· 测试、调试阶段

· 交付使用

接口对接方式的数据可靠性与价值较高,一般不存在数据重复的情况;数据通过接口实时传输,满足数据实时性的要求。

接口对接方式的缺点是接口开发费用高;协调各个软件厂商,协调难度大、投入人力大;扩展性不高,如:由于业务需要各软件系统开发出新的业务模块,其和大数据平台之间的数据接口也需做相应修改和变动,甚至要推翻以前的所有数据接口编码,工作量大、耗时长。

二、开放数据库方式

实现数据的采集汇聚,开放数据库是最直接的一种方式。

两个系统分别有各自的数据库,同类型的数据库之间是比较方便的:

1. 如果两个数据库在同一个服务器上,只要用户名设置的没有问题,就可以直接相互访问,需要在from后将其数据库名称及表的架构所有者带上即可。select * from DATABASE1.dbo.table1

2. 如果两个系统的数据库不在一个服务器上,建议采用链接服务器的形式处理,或者使用openset和opendatasource的方式,这个需要对数据库的访问进行外围服务器的配置。

而不同类型的数据库之间的连接就比较麻烦,需要做很多设置才能生效,这里不做详细说明。

开放数据库方式可以直接从目标数据库中获取需要的数据,准确性高,实时性也能得到保证,是最直接、便捷的一种方式。

但开放数据库方式也需要协调各个软件厂商开放数据库,难度大;一个平台如果同时连接多个软件厂商的数据库,并实时获取数据,这对平台性能也是巨大挑战。不过,出于安全性考虑,软件厂商一般不会开放自己的数据库。

三、基于底层数据交换的数据直接采集方式

通过获取软件系统的底层数据交换、软件客户端和数据库之间的网络流量包,基于底层IO请求与网络分析等技术,采集目标软件产生的所有数据,将数据转换与重新结构化,输出到新的数据库,供软件系统调用。

技术特点如下:

1. 无需原软件厂商配合;

2. 实时数据采集,数据端到端的响应速度达秒级;

3. 兼容性强,可采集汇聚Windows平台各种软件系统数据;

4. 输出结构化数据,作为数据挖掘、大数据分析应用的基础;

5. 自动建立数据间关联,实施周期短、简单高效;

6. 支持自动导入历史数据,通过I/O人工智能自动将数据写入目标软件;

7. 配置简单、实施周期短。

基于底层数据交换的数据直接采集方式,摆脱对软件厂商的依赖,不需要软件厂商配合,不仅需要投入大量的时间、精力与资金,不用担心系统开发团队解体、源代码丢失等原因导致系统数据采集成死局。


超甜的布丁
6楼 · 2021-10-27 16:17

1. 数据质量把控

不论什么时候应用各种各样数据源,数据质量全是一项挑戰。这代表着企业必须做的工作中是保证数据格式准确配对,并且沒有重复数据或缺乏数据导致分析不靠谱。企业必须先分析和提前准备数据,随后才可以将其与别的数据一起开展分析。

2.拓展

大数据的使用价值取决于其数量。可是,这也将会变成一个关键难题。假如企业并未设计构架方案开始进行拓展,则将会迅速面临一系列问题。其一,假如企业不准备基础设施建设,那麼基础设施建设的成本费便会提升。这将会给企业的费用预算带来压力。其二,假如企业不准备拓展,那麼其特性将会明显降低。这两个难题都应当在搭建大数据构架的整体规划环节获得处理。

3、安全系数

尽管大数据能够为企业加深对数据的深入了解,但保护这种数据依然具备挑战性。欺诈者和网络黑客将会对企业的数据十分感兴趣,他们将会试着加上自身的仿冒数据或访问企业的数据以获得敏感信息。


相关问题推荐

  • 什么是大数据时代?2021-01-13 21:23
    回答 100

    大数据(big data)一词越来越多地被提及,人们用它来描述和定义信息爆炸时代产生的海量数据,而这个海量数据的时代则被称为大数据时代。随着云时代的来临,大数据(Big data)也吸引了越来越多的关注。大数据(Big data)通常用来形容一个公司创造的大量非结...

  • 回答 84

    Java和大数据的关系:Java是计算机的一门编程语言;可以用来做很多工作,大数据开发属于其中一种;大数据属于互联网方向,就像现在建立在大数据基础上的AI方向一样,他两不是一个同类,但是属于包含和被包含的关系;Java可以用来做大数据工作,大数据开发或者...

  • 回答 52
    已采纳

    学完大数据可以从事很多工作,比如说:hadoop 研发工程师、大数据研发工程师、大数据分析工程师、数据库工程师、hadoop运维工程师、大数据运维工程师、java大数据工程师、spark工程师等等都是我们可以从事的工作岗位!不同的岗位,所具备的技术知识也是不一样...

  • 回答 29

    简言之,大数据是指大数据集,这些数据集经过计算分析可以用于揭示某个方面相关的模式和趋势。大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些含有意义的数据进行专业化处理。大数据的特点:数据量大、数据种类多、 要求实时性强、数据所蕴藏的...

  • 回答 14

    tail -f的时候,发现一个奇怪的现象,首先 我在一个窗口中 tail -f test.txt 然后在另一个窗口中用vim编辑这个文件,增加了几行字符,并保存,这个时候发现第一个窗口中并没有变化,没有将最新的内容显示出来。tail -F,重复上面的实验过程, 发现这次有变化了...

  • 回答 18

    您好针对您的问题,做出以下回答,希望有所帮助!1、大数据行业还是有非常大的人才需求的,对于就业也有不同的岗位可选,比如大数据工程师,大数据运维,大数据架构师,大数据分析师等等,就业难就难在能否找到适合的工作,能否与你的能力和就业预期匹配。2、...

  • 回答 17

    最小的基本单位是Byte应该没多少人不知道吧,下面先按顺序给出所有单位:Byte、KB、MB、GB、TB、PB、EB、ZB、YB、DB、NB,按照进率1024(2的十次方)计算:1Byte = 8 Bit1 KB = 1,024 Bytes 1 MB = 1,024 KB = 1,048,576 Bytes 1 GB = 1,024 MB = 1,048,576...

  • 回答 33

    大数据的定义。大数据,又称巨量资料,指的是所涉及的数据资料量规模巨大到无法通过人脑甚至主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。大数据是对大量、动态、能持续的数据,通过运用新系统、新工具、新...

  • 回答 5

    MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL的版本:针对不同的用户,MySQL分为两种不同的版本:MySQL Community Server社区版本,免费,但是Mysql不提供...

  • mysql安装步骤mysql 2022-05-07 18:01
    回答 2

    mysql安装需要先使用yum安装mysql数据库的软件包 ;然后启动数据库服务并运行mysql_secure_installation去除安全隐患,最后登录数据库,便可完成安装

  • 回答 5

    1.查看所有数据库showdatabases;2.查看当前使用的数据库selectdatabase();3.查看数据库使用端口showvariableslike'port';4.查看数据库编码showvariableslike‘%char%’;character_set_client 为客户端编码方式; character_set_connection 为建立连接...

  • 回答 5

    CREATE TABLE IF NOT EXISTS `runoob_tbl`(    `runoob_id` INT UNSIGNED AUTO_INCREMENT,    `runoob_title` VARCHAR(100) NOT NULL,    `runoob_author` VARCHAR(40) NOT NULL,    `submission_date` DATE,    PRI...

  • 回答 9

    学习多久,我觉得看你基础情况。1、如果原来什么语言也没有学过,也没有基础,那我觉得最基础的要先选择一种语言来学习,是VB,C..,pascal,看个人的喜好,一般情况下,选择C语言来学习。2、如果是有过语言的学习,我看应该一个星期差不多,因为语言的理念互通...

  • 回答 7

    添加语句 INSERT插入语句:INSERT INTO 表名 VALUES (‘xx’,‘xx’)不指定插入的列INSERT INTO table_name VALUES (值1, 值2,…)指定插入的列INSERT INTO table_name (列1, 列2,…) VALUES (值1, 值2,…)查询插入语句: INSERT INTO 插入表 SELECT * FROM 查...

  • 回答 5

    看你什么岗位吧。如果是后端,只会CRUD。应该是可以找到实习的,不过公司应该不会太好。如果是数据库开发岗位,那这应该是不会找到的。

  • 回答 7

    查找数据列 SELECT column1, column2, … FROM table_name; SELECT column_name(s) FROM table_name 

没有解决我的问题,去提问