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

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

爬虫可以抓取的某个网站或者某个应用的内容,提取有用的价值。也可以模拟用户在浏览器或者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


多智时代-人工智能和大数据学习入门网站|人工智能、大数据、物联网、云计算的学习交流网站

大数据采集的流程是什么,主要分为哪几步?相关推荐

  1. 阿里大数据分析与应用(part2)--大数据分析的流程与常用技术

    学习笔记,仅供参考,有错必纠 学习自:云中学院大数据课堂 文章目录 大数据分析流程 数据采集方法 大数据采集方法 离线数据采集ETL 实时数据采集与处理 数据预处理技术 数据集成 数据清洗 数据变换 ...

  2. url采集工具_大数据关键技术浅谈之大数据采集

    在前几篇文章中,企通查为大家介绍了大数据处理的基本流程.从大数据的一系列处理过程中(抽取.集成.分析.解释),我们可以发现这一整套流程中涵盖了数据存储.处理.应用等多方面的技术. 大数据价值的完美体现 ...

  3. 大数据采集(hdu)第二章笔记

    2.1大数据采集概述 大数据采集技术就是指对数据进行提取(Extract).转换(Transform).加载(Load)操作(即ETL操作),将不同来源的数据整合成为一个新的数据集,为后续的查询和分析 ...

  4. 一篇文章让你了解大数据采集技术

    大数据开启了一个大规模生产.分享和应用数据的时代,它给技术和商业带来了巨大的变化.麦肯锡研究表明,在医疗.零售和制造业领域,大数据每年可以提高劳动生产率0.5-1个百分点.大数据在核心领域的渗透速度有 ...

  5. 原来大数据工作流程可以这样理解------生米煮成熟饭!

    碎碎念 最近一直在思考作为测试工程师,如何以大数据为方向,提升自己的知识储备,适应接下来的市场需求,于是看了很多大数据相关的前辈们的文章,加上自己的理解,竟然觉着大数据工作处理流程,就好像我们在煮饭! ...

  6. 《Python爬虫大数据采集与挖掘》期末考试考题汇总带答案

    一.填空题 1.爬虫技术的应用可以分为两大类:采集型爬虫.监测型爬虫. 2.根据 Web 页面组成结构中的信息内容的生成方式不同,可以将 Web 页面分为静态页面.动态页面.以及伪静态页面三大类. 3 ...

  7. 【大数据采集技术与应用】【期末复习题】

    文章目录 一.选择题 二.填空题 三.简答题 四.编程题 一.选择题 1.zookeeper的默认监控端口号是多少? A. 2180 B. 2181 C. 2182 D. 2183 2.kafka的默 ...

  8. 数据治理-数据生命周期管理-大数据采集

    大数据采集 为满足企业或组织不同层次的管理与应用的需求,数据采集分为三个层次. 第一层次,业务电子化.为满足业务电子化的需求,实现业务流程的信息化记录,在本阶段中,主要实现对于手工单证的电子化存储,并 ...

  9. 谈谈大数据采集和常见问题

    公众号推文规则变了,点击上方 "数据社", 设为星标 后台回复[加群],申请加入数据学习交流群 全文共 1762个字,建议阅读 5 分钟 大家好,我是峰哥,今天给大家讲解一下大数据 ...

最新文章

  1. tensorflow youtube的一点笔记
  2. java管理系统用怎么框架做_java 使用servlet做学生管理系统(无框架)
  3. 【热烈祝贺】俺们的S5PV210 工控板终于启动到wince桌面了!
  4. Java实现算法导论中凸包问题Jarvis步进法
  5. 梯度下降 gradient descent
  6. ElasticSearch-Springboot-Data使用
  7. thinkphp3.2.3 找不到自定义模型_Orion HTC VIVE高性价比动作捕捉,虚拟直播 支持UE4.25 导入自定义模型...
  8. 设计灵感|见过如此吸睛的,单色调Banner设计么?
  9. 如何定义适配器adapter类_设计模式22-Adapter(适配器)模式-组件接口适配
  10. mysql workbench 1064_mysql - MySQL Workbench中的正向工程输出错误1064 - 堆栈内存溢出
  11. swfupload 上传报 security error # 2049 (security) 安全错误问题
  12. 开发落网电台windows phone 8应用的计划(9)
  13. 开源小工具 酷狗、网易音乐缓存文件转mp3工具
  14. 数学建模之层次分析法及其应用
  15. linux 路由配置工具下载,Linux/Openwrt路由安装配置UPNP服务提高迅雷下载速度
  16. Umeng App监管执法合规自查通知
  17. Windows 10上的LockApp.exe是什么?
  18. 用Ogre实现画中画 [ 截图 ]
  19. python打包whl文件
  20. Core Telephony Framework

热门文章

  1. android 判断键盘 输入法 是否弹出
  2. Android设备通过usb控制zedboard产生pwm波实验
  3. vue绑定快捷键实现上下翻页
  4. 如何通过JavaScript进行验证码的刷新
  5. 说说Intel的驱动
  6. 天行机器人接口接入云实验室
  7. 整理国内无线通信模组企业
  8. Project甘特图_批量修改条形图样式
  9. 华为鸿蒙开发板-Hi3516DV300硬件设计原理图PCB硬件
  10. Redis不同数据类型下的基础查询命令