什么是爬虫?
简单来说:代替人去模拟浏览器进行网页操作。
它能解决什么问题?
自动高效地获取互联网中我们感兴趣的信息并为我们所用。
即:为其他程序提供数据源 如搜索引擎(百度、Google等)、数据分析、大数据等等。
爬虫的分类:
通用网络爬虫:
搜索引擎,比如:百度、谷歌、Safari...
聚焦网络爬虫:
根据既定的目标有选择的抓取某一特定主题内容,并过滤掉无用的信息。
企业获取数据的方式:
- 公司自有的数据
- 第三方平台购买的数据 (百度指数、数据堂)
- 爬虫爬取的数据
Python做爬虫的优势:
- PHP : 对多线程、异步支持不太好
- Java : 代码量大,代码笨重
- C/C++ : 代码量大,难以编写
- Python : 支持模块多、代码简洁、开发效率高 (scrapy框架)
爬虫违法么?
爬虫作为一种计算机技术就决定了它的中立性,因此爬虫本身在法律上并不被禁止,但是利用爬虫技术获取数据这一行为是具有违法甚至是犯罪的风险的。
http 与 https 协议:
学习爬虫之前,我们先来了解一下 http 与 https 协议:
什么是协议:
网络协议是计算机之间为了实现网络通信而达成的一种“约定”或者”规则“,有了这种”约定“,不同厂商的生产设备,以及不同操作系统组成的计算机之间,就可以实现通信。
Http 协议又是个啥?
HTTP协议是超文本传输协议的缩写,英文是 Hyper Text Transfer Protocol。它是从 WEB 服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。
HTTP是一个基于 TCP/IP 通信协议来传递数据的协议,传输的数据类型为HTML 文件,、图片文件, 查询结果等。
HTTP协议一般用于 B/S 架构(浏览器/服务器结构)。浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务端即 WEB 服务器发送所有请求。
Http的特点:
-
http协议支持客户端/服务端模式,也是一种请求/响应模式的协议。
-
简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。
-
灵活:HTTP允许传输任意类型的数据对象。传输的类型由Content-Type加以标记。
-
无连接:限制每次连接只处理一个请求。服务器处理完请求,并收到客户的应答后,即断开连接,但是却不利于客户端与服务器保持会话连接,为了弥补这种不足,产生了两项记录http状态的技术,一个叫做Cookie,一个叫做Session。
-
无状态:无状态是指协议对于事务处理没有记忆,后续处理需要前面的信息,则必须重传。
Http的请求与响应:
大致步骤:
-
当用户在浏览器的地址栏中输入一个URL并按回车键之后,浏览器会向HTTP服务器发送HTTP请求。HTTP请求主要分为“Get”和“Post”两种方法。
-
当我们在浏览器输入URL www.baidu.com 的时候,浏览器发送一个Request请求去获取 www.baidu.com 的html文件,服务器把Response文件对象发送回给浏览器。
-
浏览器分析Response中的 HTML,发现其中引用了很多其他文件,比如 images 文件,CSS文件,JS文件。 浏览器会自动再次发送 Request 去获取图片,CSS文件,或者JS文件。
-
当所有的文件都下载成功后,网页会根据HTML语法结构,完整的显示出来了。
Http 报文的组成:
HTTP报文大致分为报文首部和报文主体两块,中间用空行来划分。通常,不一定有报文主体。
- 报文首部:包含服务器或客户端需处理的请求或响应的内容及属性。
- 报文主体:是应该被发送的数据。
请求报文首部的结构: