最新 Python 学习教程 _ 想学 Python 爬虫,这些基础一定要先打扎实了
知道很多伙伴在学Python 爬虫的时候 **** 都是比较糊,毕竟我当年学的时候也差不多,心里一定得明镜一样知道该怎么学,一步步怎么来。给大家的良心,值得你参考的!
爬虫定义、分类和流程
爬虫定义
网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。
爬虫就是模拟浏览器的行为,越像越好,越像就越不容易被发现。
原则上, 只要是浏览器 (客户端) 能做的事情,爬虫都能够做。
爬虫的分类
通用爬虫:通常指搜索引擎的爬虫
聚焦爬虫:针对特定网站的爬虫
爬虫的用途
今日头条
网易云音乐
12306抢票
网站自动投票
短信轰炸
等等
爬虫的流程
向起始 url 发送请求,并获取响应
对响应进行提取
如果提取 url,则继续发送请求获取响应
如果提取数据,则将数据进行保存
robots 协议
Robots 协议:网站通过 Robots 协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,但它仅仅是道德层面上的约束 例如:淘宝的 robots 协议
总结
爬虫概念:模拟浏览器发送网络请求,接收请求响应。只要是浏览器 (客户端) 能做的事情,爬虫都能够做。
爬虫的分类:聚焦爬虫、通用爬虫
爬虫的流程:
向起始 url 发送请求,并获取响应
对响应进行提取
如果提取 url,则继续发送请求获取响应
如果提取数据,则将数据进行保存
HTTP 与 HTTPS 的概念
HTTP
概念:HTTP(超文本传输协议)是应用层上的一种客户端 / 服务端模型的通信协议, 它由请求和响应构成,且是无状态的。 协议:协议规定了通信双方必须遵守的数据传输格式,这样通信双方按照约定的格式才能准确的通信。 无状态:无状态是指两次谅解通信之间是没有任何联系的,每次都是一个新的连接,服务端不会记录前后的请求信息。
HTTP 请求流程
浏览器通过域名解析服务器(DNS)获取 IP 地址
浏览器先向 IP 发起请求,并获取相应
在返回的响应内容(html)中,会带有 css、js、图片等 url 地址,以及 ajax 代码,浏览器按照响应内容中的顺序依次发送其他的请求,并获取相应的响应
浏览器每获取一个响应就对展示出的结果进行添加(加载),js,css 等内容会修改页面的内容,js 也可以重新发送请求,获取响应
从获取第一个响应并在浏览器中展示,直到最终获取全部响应,并在展示的结果中添加内容或修改————这个过程叫做浏览器的渲染
五层网络模型
HTTP 协议结构图
网络模型对应关系
HTTP、RTSP、FTP -------> 应用层
TCP、UDP -------> 传输层
IP -------> 网络层
数据链路 -------> 数据链路层
物理介质 -------> 物理层
url 地址格式
格式说明: scheme://host[:port]/path/…/[?query-string][#anchor]
scheme:协议(例如:http, https, ftp)
host:服务器的 IP 地址或者域名
port:服务器的端口(如果是走协议默认端口,缺省端口 80)
path:访问资源的路径
query-string:参数,发送给 http 服务器的数据
anchor:锚(跳转到网页的指定锚点位置)
HTTP 请求
请求格式
案例
请求方式
根据 HTTP 标准,HTTP 请求可以使用多种请求方法。
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。
HTTP1.1 新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
常见请求头
HTTP 响应
响应格式
HTTP 响应也由四个部分组成,分别是:状态行、消息报头、空行(回车符 + 换行符)和响应正文。
响应头
HTTP 状态码
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。HTTP 状态码的英文为 HTTP Status Code。
HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP 状态码共分为 5 种类型
常见的 HTTP 状态码:
200 - 请求成功
301 - 资源(网页等)被永久转移到其它 URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误
HTTPS
1- HTTP + SSL (安全套接字层),即带有安全套接字层的超本文传输协议
2- 默认端口号:443
HTTPS 作用
在传输过程中对数据进行加密,防止中间路由器、交换机等中间的路由设备对数据进行篡改。
HTTP 与 HTTPS 优缺点
HTTP 因为不需要对数据进行加密所以性能更高,但是安全性差。
HTTPS 虽然安全性高,但是因为浏览器和服务器端需要对数据进行加解密,所以占用服务器资源。
当前形式
注意:目前 HTTPS 是未来主流,微信小程序,iOS 客户端,android 客户端的接口提供都需要 HTTPS 接口支持。