📌 专栏:Python网络爬虫入门到实战(零基础连载全套)
🎯 本章定位:爬虫核心底层原理课。90%爬虫报错、反爬拦截、访问失败,根源都是不懂网络协议。本章零基础吃透HTTP/HTTPS核心规则,不讲废话、只学爬虫能用的知识点,为后续requests实战、反爬绕过、接口抓包筑牢基础。
✅ 学习目标
-
搞懂HTTP与HTTPS的区别、安全机制与爬虫适配逻辑
-
精通GET/POST两大核心请求方式,明确爬虫使用场景
-
掌握请求头、请求体、参数、Cookie等核心请求要素
-
熟记常见HTTP响应状态码,快速排查爬虫报错
-
理解网络完整请求链路,看懂爬虫每一步数据流转
一、为什么爬虫必须学HTTP协议?
在上一章我们知道,爬虫的核心就是模拟浏览器发送网络请求、接收服务器响应。
而浏览器与服务器沟通的"通用语言",就是 HTTP/HTTPS 协议。
通俗总结:
-
不会协议 = 只会抄代码,报错一脸懵
-
懂协议 = 能自主写爬虫、排查报错、绕过基础反爬、看懂接口数据
后续所有爬虫代码(requests请求、登录抓包、参数加密、代理爬取),全部基于本章知识点展开。
二、HTTP与HTTPS超通俗详解
2.1 什么是HTTP协议?
HTTP(超文本传输协议),是互联网最基础的通信规则,用于规范客户端(浏览器/爬虫)和服务器之间的数据传输格式。
核心特点:
-
无状态:服务器不记住上一次的访问记录,每次请求都是独立的
-
明文传输:数据直接传输,不加密,容易被抓包、窃取
-
速度快、开销小,适合公开静态网页传输
2.2 什么是HTTPS协议?
HTTPS = HTTP + SSL/TLS 加密协议,是HTTP的安全升级版。
核心特点:
-
数据加密传输,第三方无法直接窃取、篡改数据
-
需要CA证书认证,安全性极高
-
目前主流网站全部使用HTTPS(百度、电商、社交平台)
2.3 爬虫视角核心区别
-
HTTP:端口80,无需证书,请求简单,无加密校验
-
HTTPS:端口443,加密传输,部分爬虫需要关闭证书校验,否则报错
三、爬虫必备:完整网络请求链路(客户端→服务器)
一次完整的爬虫访问,分为请求 和响应两个核心部分,缺一不可:
3.1 请求(Request)
爬虫/浏览器主动发给服务器的数据包,包含:访问方式、网址、浏览器信息、参数、Cookie等。
3.2 响应(Response)
服务器接收请求后,返回给爬虫的数据包,包含:状态码、网页源码、JSON数据、图片资源等。
核心公式 :爬虫 = 构造合法Request + 解析有效Response
四、两大核心请求方式:GET vs POST(爬虫重中之重)
所有爬虫请求,归根结底只有两种:GET、POST,必须彻底分清使用场景。
4.1 GET 请求(查数据)
作用 :向服务器获取、查询公开数据,不会修改服务器内容。
爬虫场景:90%的基础爬虫都是GET请求,比如爬取文章、图片、榜单、新闻、首页数据。
核心特征:
-
参数直接拼接在URL链接后面,公开可见
-
参数长度有限制,数据量小
-
可被缓存、收藏、历史记录保存
-
无请求体,参数透明
URL参数示例:
https://www.baidu.com/s?wd=Python爬虫
解析:wd=Python爬虫 就是GET请求参数,代表搜索关键词。
4.2 POST 请求(交数据)
作用 :向服务器提交、上传数据,用于登录、注册、提交表单、发布内容。
爬虫场景:模拟网站登录、提交查询条件、抓取分页接口、 ajax动态数据。
核心特征:
-
参数放在请求体中,不拼接在URL上,相对隐蔽
-
无长度限制,可传输大量数据、文件、图片
-
不会被缓存,无法直接通过URL访问
-
常用于隐私交互、数据提交场景
4.3 极简区分口诀(爬虫专用)
-
只看不取、只查不交用GET
-
登录提交、传参查询、上传数据用POST
五、HTTP请求完整组成(爬虫反爬核心)
很多新手爬虫直接被拦截、403拒绝访问,核心原因就是:请求格式不合法,被网站识别为机器爬虫。
合法的请求必须包含三大模块:请求行、请求头、请求体。
5.1 请求行(Request Line)
包含:请求方式 + 请求URL + 协议版本
示例:GET https://www.baidu.com HTTP/1.1
5.2 请求头(Request Headers)------ 反爬核心
请求头是客户端的"身份名片",告诉服务器:我是谁、用什么浏览器、来自哪里、携带什么缓存信息。
爬虫伪装浏览器,核心就是伪造请求头!
重点掌握5个爬虫高频字段:
- User-Agent(UA)------ 最重要
标识客户端身份(浏览器型号、系统版本),无UA的请求99%会被拦截。
裸爬虫请求(无UA)= 暴露机器身份,直接403拒绝。
- Referer
标识跳转来源,告诉服务器当前页面从哪个页面跳转而来,部分防盗链网站必须携带。
- Cookie
用户会话凭证,保存登录状态、用户信息,模拟登录爬虫必备。
- Host
目标网站域名,校验访问目标合法性。
- Accept
告诉服务器可接收的数据类型,提升请求合法性。
5.3 请求体(Request Body)
仅POST请求拥有,用于存放提交的表单数据、账号密码、接口参数。GET请求无请求体。
六、HTTP响应详解(爬虫数据来源)
服务器返回的响应数据,是我们爬虫最终需要解析的内容,包含三部分:
6.1 响应状态码(核心排查依据)
用数字标识本次请求是否成功,爬虫排错必备,熟记高频状态码:
-
200:请求成功,正常获取数据(最理想状态)
-
301/302:永久/临时重定向,网址跳转
-
403:禁止访问,服务器识别为爬虫、无权限
-
404:页面不存在,URL地址错误
-
405:请求方式不允许(GET/POST用错)
-
500:服务器内部错误,网站本身故障
-
502/503:服务器繁忙、宕机、维护中
6.2 响应头(Response Headers)
服务器返回的配置信息,包含编码格式、Cookie、缓存规则、服务器型号等,可用于辅助爬虫配置。
6.3 响应体(Response Body)
爬虫真正需要的数据!
包含HTML网页源码、JSON接口数据、图片二进制流、文本内容等,是我们解析、提取、保存的核心数据源。
七、爬虫新手高频踩坑总结(协议层面)
-
❌ 裸请求无UA,直接403拦截(最常见错误)
-
❌ 需要POST提交数据,误用GET导致无数据返回
-
❌ 忽略Cookie,无法爬取登录后可见的数据
-
❌ 不懂状态码,报错后不知道问题出在哪
-
❌ 忽略HTTPS证书校验,导致程序报错崩溃
八、本章总结
-
HTTP明文传输、HTTPS加密传输,主流网站均为HTTPS协议
-
GET用于查询获取数据,参数透明;POST用于提交数据,参数隐蔽
-
请求头UA是爬虫伪装核心,无UA极易被反爬拦截
-
状态码是爬虫排错的第一依据,200成功、403拦截、404地址错误
-
爬虫本质:构造合法请求,解析有效响应数据
九、课后作业
-
用自己的话简述 GET与POST 的核心区别和爬虫使用场景。
-
熟记常见状态码含义,说出200、403、404、500对应的错误场景。
-
打开浏览器开发者工具(F12),随便打开一个网页,查看Headers中的User-Agent字段并复制保存。
下一章预告:第03章 爬虫环境搭建|requests库安装、入门请求实战(第一个爬虫代码)
💖点赞 + 收藏 + 关注,从零学懂Python全套爬虫实战技术