大数据时代,爬虫,你需要了解!

若有不正之处敬请大家评论指正,此外,爬虫用的最多的语言就是Python,看懂需要一定的Python基础,如果想学习可以评论留言,我这里有全套的Python学习历程,以及web前端,数据库MySQL,Redis,MongoDB,Django等,若有环境安装等问题也可以评论留言

大数据时代,爬虫,你需要了解!

Python

大数据时代,爬虫,你需要了解!

认识爬虫

首先:爬虫是什么,爬虫就是代替人去访问网站,获取数据

了解爬虫,我们需要了解一下四个方面。

HTTP与HTTPS

互联网的飞速发展是商业经济推动的。目前几乎所有的商业应用都是基于互联网的,它们一般采用c/s架构,b/s架构或者m/s架构,本质就是客户端程序和服务器端程序在互联网上进行数据交互。

大数据时代,爬虫,你需要了解!

c/s 即 client server 客户端 服务端

b/s 即 browser server 浏览器 服务端

m/s 即 moblie server 移动端 服务端

目前互连网上90%的网络传输都是基于http协议。

HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)

一次http请求的基本流程是,有客户端向服务端发起一次请求(request), 而服务器在接收到以后返回给客户端一个响应(response)。所以一次完整的http请求包含请求和响应两部分。

默认的http协议端口为80端口。

大数据时代,爬虫,你需要了解!

发送http请求时,通过url对网络资源进行定位。

URL(Uniform Resource Locator),中文叫统一资源定位符。是用来标识某一处资源的地址。也即是我们常说的网址。以下面这个URL为例,介绍下普通URL的各部分组成:

大数据时代,爬虫,你需要了解!

那如何发送http请求呢?它又有什么样的规范呢?

http请求

客户端发送一个HTTP请求到服务器的请求消息包括以下部分:请求行,请求头,空行和请求数据。

下图给出请求报文的一般格式。

大数据时代,爬虫,你需要了解!

大数据时代,爬虫,你需要了解!

一个HTTP请求,包含请求行,请求头,空行和请求数据 4个部分。

根据http标准,http请求可以使用多种请求方法。

1.0定义了三种请求方法:GET,POST和HEAD方法

1.1新增了五种请求方法:OPTIONS,PUT,DELETE,TRACE和CONNECT方法

常用方法 是 get和post。

GET

其实简单来说,GET方法一般用来负责获取数据,或者将一些简短的数据放到URL参数中传递到服务器。比POST更加高效和方便。

POST

由于GET方法最多在url中携带1024字节数据,且将数据放到URL中传递太不安全,数据量大时URL也会变得冗长。所以传递数据量大或者安全性要求高的数据的时候,最好使用POST方法来传递数据。

HTTP响应

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

大数据时代,爬虫,你需要了解!

HTTP响应状态码

当客户端向服务端发起一次请求后,服务端在返回的响应头中会包含一个HTTP状态码。

HTTP的状态码是由三位数字来表示的,由第一位数字来表示状态码的类型,一般来说有五种类型:

大数据时代,爬虫,你需要了解!

HTTP协议的特点(作为了解)

- HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

- HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。

- HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

爬虫概念

什么是爬虫?

网络爬虫也叫网络蜘蛛,它特指一类自动批量下载网络资源的程序,这是一个比较口语化的定义。更加专业和全面对的定义是:网络爬虫是伪装成客户端与服务端进行数据交互的程序。

爬虫有什么作用?

1. 数据采集

大数据时代来临,数据就是核心,数据就是生产力,越来越多的企业开始注重收集用户数据,而爬虫技术是收集数据的一种重要手段。

2. 搜索引擎

百度,谷歌等搜索引擎都是基于爬虫技术。

模拟操作

爬虫也被广泛用于模拟用户操作,测试机器人,灌水机器人等。

爬虫开发的重难点

数据的获取

网络公共资源都是为用户准备的,为了避免被爬虫采集,服务端会设置非常多的图灵测试,阻止爬虫的恶意爬取,也即是反爬措施。爬虫开发工程师在开发爬虫时,需要解决这些反爬措施。我们在开发爬虫的过程中,有很大一部分的工作就是处理这些反爬措施。

采集的速度

大数据时代,需要巨大的数据量,动辄千万条的级别,甚至上亿条。如果采集速度跟不上,耗时过长,那么就达不到商业要求。一般我们会采取并发以及分布式来解决速度上的问题。这也是爬虫开发过程中的另外一个重心。

下面就是一个爬虫,它可以下载百度首页面的html数据。绝大多数网络爬虫的目标数据都是网页数据。

大数据时代,爬虫,你需要了解!

会话技术(了解)

http是无状态的,那服务端怎么区分同一个用户的连续请求呢,这就用到了会话技术:cookie和session。

cookie

Cookie有时也用其复数形式 Cookies,英文是饼干的意思。指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。最新的规范是 RFC6265 。

Cookie其实就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。 服务器在接收到Cookie以后,会验证Cookie的信息,以此来辨别用户的身份。

Cookie可以理解为一个本地凭证。

session

Session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个session。这个词在各个领域都有在使用。

而我们web领域,一般使用的是其本义,一个浏览器窗口从打开到关闭这个期间。

Session的目的则是,在一个客户从打开浏览器到关闭浏览器这个期间内,发起的所有请求都可以被识别为同一个用户。而实现的方式则是,在一个客户打开浏览器开始访问网站的时候,会生成一个cookie,SessionID,这个ID每次的访问都会带上,而服务器会识别这个SessionID并且将与这个SessionID有关的数据保存在服务器上。由此来实现客户端的状态识别。因此session是基于cookie的Session与Cookie相反,Session是存储在服务器上的数据,只由客户端传上来的SessionId来进行判定,所以相对于Cookie,Session的安全性更高。

一般SessionID会在浏览器被关闭时丢弃,或者服务器会验证Session的活跃程度,例如30分钟某一个SessionID都没有活跃,那么也会被识别为失效。

通过socket下载一张图片

利用谷歌浏览器分析http请求

大数据时代,爬虫,你需要了解!

代码案例

大数据时代,爬虫,你需要了解!


分享到:


相關文章: