什么是爬虫?

简略来说:替代人去模仿浏览器进行网页操作。

它能处理什么问题?

主动高效地获取互联网中咱们感兴趣的信息并为咱们所用。

即:为其他程序供给数据源 如搜索引擎(百度、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的恳求与呼应:

【Python】初识爬虫

【Python】初识爬虫

大致步骤:

  1. 当用户在浏览器的地址栏中输入一个URL并按回车键之后,浏览器会向HTTP服务器发送HTTP恳求。HTTP恳求首要分为“Get”和“Post”两种办法。

  2. 当咱们在浏览器输入URL www.baidu.com 的时候,浏览器发送一个Request恳求去获取 www.baidu.com 的html文件,服务器把Response文件对象发送回给浏览器。

  3. 浏览器分析Response中的 HTML,发现其间引用了许多其他文件,比方 images 文件,CSS文件,JS文件。 浏览器会主动再次发送 Request 去获取图片,CSS文件,或许JS文件。

  4. 当一切的文件都下载成功后,网页会依据HTML语法结构,完好的显示出来了。

Http 报文的组成:

HTTP报文大致分为报文首部报文主体两块,中心用空行来划分。通常,不一定有报文主体。

  • 报文首部:包括服务器或客户端需处理的恳求或呼应的内容及属性。
  • 报文主体:是应该被发送的数据。
恳求报文首部的结构:

【Python】初识爬虫

呼应报文首部的结构:

【Python】初识爬虫

报文主体部分:

【Python】初识爬虫

控制台点击Response,能够看到服务器回来给浏览器的数据(如上图),数据格式为html,浏览器拿到数据后解析渲染成咱们所看到的百度主页。

什么是 Https?

  • https=http+ssl,顾名思义,https是在 http 的根底上加上了 SSL 维护壳,信息的加密进程就是在 SSL 中完成的;
  • https,是以安全为方针的 HTTP 通道,简略讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全根底是SSL。

http 与 https 的差异

一般http中存在如下问题:

  • 恳求信息明文传输,简单被偷听截取;
  • 数据的完好性未校验,简单被篡改;
  • 没有验证对方身份,存在冒充风险;

Https 的缺陷:

  • HTTPS协议多次握手,导致页面的加载时间延长近50%;
  • HTTPS衔接缓存不如HTTP高效,会添加数据开销和功耗;
  • 申请SSL证书需求钱,功能越强壮的证书费用越高。
  • SSL涉及到的安全算法会耗费 CPU 资源,对服务器资源耗费较大。

小结:

  • HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理。
  • http和https使用衔接办法不同,默认端口也不一样,http是80,https是443。

拓宽:

URL:(Uniform Resource Locator)

中文叫一致资源定位符。是用来标识某一处资源的地址。也 即是咱们常说的网址。

【Python】初识爬虫

常见的恳求办法:

  • GET:恳求指定的页面信息,并回来实体主体。
  • POST:向指定资源提交数据进行处理恳求(例如提交表单或许上传文件)。数据被包括在恳求体中。POST恳求或许会导致新的资源的树立和/或已有资源的修正。
  • HEAD:类似于get恳求,只不过回来的呼应中没有具体的内容,用于获取报头
  • PUT:从客户端向服务器传送的数据取代指定的文档的内容。
  • DELETE:恳求服务器删除指定的页面。

呼应状况码:

访问一个网页时,浏览器会向web服务器宣布恳求。此网页地点的服务器会回来一个包括HTTP状况码的信息头用以呼应浏览器的恳求。

状况码分类:
  • 1XX- 信息型,服务器收到恳求,需求恳求者继续操作。
  • 2XX- 成功型,恳求成功收到,了解并处理。
  • 3XX – 重定向,需求进一步的操作以完成恳求。
  • 4XX – 客户端过错,恳求包括语法过错或无法完成恳求。
  • 5XX – 服务器过错,服务器在处理恳求的进程中发生了过错。
常见的状况码:
  • 200 OK – 客户端恳求成功
  • 301 – 资源(网页等)被永久转移到其它URL
  • 302 – 临时跳转
  • 400 Bad Request – 客户端恳求有语法过错,不能被服务器所了解
  • 401 Unauthorized – 恳求未经授权,这个状况代码必须和WWW-Authenticate报头域一起使用
  • 404 – 恳求资源不存在,或许是输入了过错的URL
  • 500 – 服务器内部发生了不行预期的过错
  • 503 Server Unavailable – 服务器当前不能处理客户端的恳求,一段时间后或许康复正常。
User-Agent 用户代理(反反爬的第一步)

作用:记录用户的浏览器、操作系统等,为了让用户更好的获取HTML页面效果。

Referer防盗链:

标明当前这个恳求是从哪个url过来的。一般情况下能够用来做反爬的技能。

抓包东西的使用:

【Python】初识爬虫

  • Elements : 元素 网页源代码,提取数据和分析数据(有些数据是经过特别处理的所以并不是都是准确的)
  • Console : 控制台 (打印信息)
  • Sources : 信息来历 (整个网站加载的文件)
  • NetWork : 网络作业(信息抓包) 能够看到许多的网页恳求