python网络爬虫系列(0)——爬虫概述 http协议复习
一、爬虫概述
知识点:
了解 爬虫的概念
了解 爬虫的作用
了解 爬虫的分类
掌握 爬虫的流程
1. 爬虫的概念
模拟浏览器,发送请求,获取响应
网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端(主要指浏览器)发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。
- 原则上,只要是客户端(浏览器)能做的事情,爬虫都能够做
- 爬虫也只能获取客户端(浏览器)所展示出来的数据
知识点:了解 爬虫的概念
2. 爬虫的作用
爬虫在互联网世界中有很多的作用,比如:
数据采集
- 抓取微博评论(机器学习舆情监控)
- 抓取招聘网站的招聘信息(数据分析、挖掘)
- 新浪滚动新闻
- 百度新闻网站
软件测试
- 爬虫之自动化测试
- 虫师
12306抢票
网站上的投票
- 投票网
网络安全
短信轰炸
- 注册页面1
- 注册页面2
- 注册页面3
web漏洞扫描
知识点:了解 爬虫的作用
3. 爬虫的分类
3.1 根据被爬取网站的数量不同,可以分为:
- 通用爬虫,如 搜索引擎
- 聚焦爬虫,如12306抢票,或专门抓取某一个(某一类)网站数据
3.2 根据是否以获取数据为目的,可以分为:
- 功能性爬虫,给你喜欢的明星投票、点赞
- 数据增量爬虫,比如招聘信息
3.3 根据url地址和对应的页面内容是否改变,数据增量爬虫可以分为:
基于url地址变化、内容也随之变化的数据增量爬虫
url地址不变、内容变化的数据增量爬虫
知识点:了解 爬虫的分类
4. 爬虫的流程
爬虫的基本流程如图所示
- 获取一个url
- 向url发送请求,并获取响应(需要http协议)
- 如果从响应中提取url,则继续发送请求获取响应
- 如果从响应中提取数据,则将数据进行保存
知识点:掌握 爬虫的流程
向url发送请求,并获取响应(需要http协议)
3. 如果从响应中提取url,则继续发送请求获取响应
4. 如果从响应中提取数据,则将数据进行保存
知识点:掌握 爬虫的流程
二、http协议复习
知识点
掌握 http以及https的概念和默认端口
掌握 爬虫关注的请求头和响应头
了解 常见的响应状态码
理解 浏览器和爬虫爬取的区别
一提起http协议,大家都会想起它是一个应用层协议,那么http协议跟爬虫有什么关系呢?请看下图:
1. http以及https的概念和区别
HTTPS比HTTP更安全,但是性能更低
- HTTP:超文本传输协议,默认端口号是80
- 超文本:是指超过文本,不仅限于文本;还包括图片、音频、视频等文件
- 传输协议:是指使用共用约定的固定格式来传递转换成字符串的超文本内容
- HTTPS:HTTP + SSL(安全套接字层),即带有安全套接字层的超本文传输协,默认端口号:443
- SSL对传输的内容(超文本,也就是请求体或响应体)进行加密
- 可以打开浏览器访问一个url,右键检查,点击net work,点选一个url,查看http协议的形式
知识点:掌握 http以及https的概念和默认端口
2. 爬虫特别关注的请求头和响应头
2.1 特别关注的请求头字段
http请求的形式如上图所示,爬虫特别关注以下几个请求头字段
- Content-Type
- Host (主机和端口号)
- Connection (链接类型)
- Upgrade-Insecure-Requests (升级为HTTPS请求)
- User-Agent (浏览器名称)
- Referer (页面跳转处)
- Cookie (Cookie)
- Authorization(用于表示HTTP协议中需要认证资源的认证信息,如前边web课程中用于jwt认证)
加粗的请求头为常用请求头,在服务器被用来进行爬虫识别的频率最高,相较于其余的请求头更为重要,但是这里需要注意的是并不意味这其余的不重要,因为有的网站的运维或者开发人员可能剑走偏锋,会使用一些比较不常见的请求头来进行爬虫的甄别
2.2 特别关注的响应头字段
http响应的形式如上图所示,爬虫只关注一个响应头字段
- Set-Cookie (对方服务器设置cookie到用户浏览器的缓存)
知识点:掌握 爬虫关注的请求头和响应头
3. 常见的响应状态码
- 200:成功
- 302:跳转,新的url在响应的Location头中给出
- 303:浏览器对于POST的响应进行重定向至新的url
- 307:浏览器对于GET的响应重定向至新的url
- 403:资源不可用;服务器理解客户的请求,但拒绝处理它(没有权限)
- 404:找不到该页面
- 500:服务器内部错误
- 503:服务器由于维护或者负载过重未能应答,在响应中可能可能会携带Retry-After响应头;有可能是因为爬虫频繁访问url,使服务器忽视爬虫的请求,最终返回503响应状态码
我们在学习web知识的时候就已经学过了状态码的相关知识,我们知道这是服务器给我的相关反馈,我们在学习的时候就被教育说应该将真实情况反馈给客户端,但是在爬虫中,可能该站点的开发人员或者运维人员为了阻止数据被爬虫轻易获取,可能在状态码上做手脚,也就是说返回的状态码并不一定就是真实情况,比如:服务器已经识别出你是爬虫,但是为了让你疏忽大意,所以照样返回状态码200,但是响应体重并没有数据。
所有的状态码都不可信,一切以是否从抓包得到的响应中获取到数据为准
知识点:了解 常见的响应状态码
4. 浏览器的运行过程
在回顾完http协议后,我们来了解以下浏览器发送http请求的过程
4.1 http请求的过程
- 浏览器在拿到域名对应的ip后,先向地址栏中的url发起请求,并获取响应
- 在返回的响应内容(html)中,会带有css、js、图片等url地址,以及ajax代码,浏览器按照响应内容中的顺序依次发送其他的请求,并获取相应的响应
- 浏览器每获取一个响应就对展示出的结果进行添加(加载),js,css等内容会修改页面的内容,js也可以重新发送请求,获取响应
- 从获取第一个响应并在浏览器中展示,直到最终获取全部响应,并在展示的结果中添加内容或修改————这个过程叫做浏览器的渲染
4.2 注意:
但是在爬虫中,爬虫只会请求url地址,对应的拿到url地址对应的响应(该响应的内容可以是html,css,js,图片等)
浏览器渲染出来的页面和爬虫请求的页面很多时候并不一样,是因为爬虫不具备渲染的能力(当然后续课程中我们会借助其它工具或包来帮助爬虫对响应内容进行渲染)
- 浏览器最终展示的结果是由多个url地址分别发送的多次请求对应的多次响应共同渲染的结果
- 所以在爬虫中,需要以发送请求的一个url地址对应的响应为准来进行数据的提取
知识点:理解 浏览器展示的结果可以由多次请求对应的多次响应共同渲染出来,而爬虫是一次请求对应一个响应
5. 关于http协议的其它参考阅读
- https://blog.csdn.net/qq_33301113/article/category/6943422/2
- https://www.xuebuyuan.com/3252125.html
- https://baike.baidu.com/item/http/243074?fr=aladdin
- https://www.jianshu.com/p/cc1fea7810b2
- https://blog.csdn.net/qq_30553235/article/details/79282113
- https://segmentfault.com/q/1010000002403462
- https://blog.csdn.net/qq_30553235/article/details/79282113
- https://segmentfault.com/q/1010000002403462
python网络爬虫系列(0)——爬虫概述 http协议复习相关推荐
- 快速入门网络爬虫系列 Chapter16 | 爬虫性能提升
Chapter16 | 爬虫性能提升 一.基础简介 1.任务调度 2.线程与进程 2.1.进程 2.2.线程 2.3.线程与进程的联系 2.4.线程与进程的区别 3.多线程 3.1.多线程的原理 3. ...
- Python网络数据采集系列-------概述
这是一个正在准备中的系列文章,主要参考的是<Web Scraping with Python_Collecting Data from the Modern Web-O'Reilly(2015) ...
- python网络爬图_Python爬虫爬图片需要什么
Python爬虫爬图片需要什么?下面用两种方法制作批量爬取网络图片的方法: 第一种方法:基于urllib实现 要点如下: 1.url_request = request.Request(url) 2. ...
- python入门代码示例-Python入门简单的静态网页爬虫3.0 (爬虫的示例代码)
一.需求分析 爬取百度词条Python页面的相关100个页面,分析目标:分析(url格式 数据格式 网页编码 ).url格式限定了爬取的网页格式避免一些不相干的网页的爬取.数据格式主要是内容中相关的标 ...
- 【python爬虫系列】爬虫+Selenium
文章目录 Python下Selenium安装及环境配置 Python Selenium库的使用 基础知识 Selenium 快速入门 python爬取百度 python爬取拉勾招聘 selenium. ...
- 【Python合集系列】爬虫有什么用,网友纷纷给出自己的答案,王老师,我..我想学那个..爬虫。可以嘛?“(代码免费分享)
导语 Hello,大家好呀!我是木木子吖- 一个集美貌幽默风趣善良可爱并努力码代码的程序媛一枚. 听说关注我的人会一夜暴富发大财哦~ (哇哇哇 这真的爱
- Java爬虫系列(五) - 爬虫补充内容+ElasticSearch展示数据
Java爬虫内容补充和ElasticSearch 网页去重 之前我们对下载的url地址进行了去重操作,避免同样的url下载多次.其实不光url需要去重,我们对下载的内容也需要去重. 在网上我们可以找到 ...
- Dapr微服务应用开发系列0:概述
题记:Dapr是什么,Dapr包含什么,为什么要用Dapr. Dapr是什么 Dapr(Distributed Application Runtime),是微软Azure内部创新孵化团队的一个开源项目 ...
- python网络编程系列
计算机基础 网络基础 套接字 socket模块 TCP协议和UDP协议 struct 模块简介 struct 模块解决 TCP黏包问题 socket 客户端的认证 socketserver模块初识 客 ...
最新文章
- 从点亮一个LED开始,Cortex-A9裸机程序设计
- mysql variables_通过什么命令能够改变mysql的variables的变量里的值?
- mysql数据导入导出 CSV格式_MySQL中导入导出CSV格式数据
- 广汽埃安总经理古惠南:8分钟快充也不光是电池的问题 ,跟充电桩有关
- My Ruby Blog
- Oracle视图、自定义函数、存储过程、触发器
- Dell R730 服务器重装系统Ubuntu16.04
- rose-scanning reading
- AcWing 902. 最短编辑距离(线性DP)
- Suse Enterprise Server 11的安装
- 解决Win7的svchost进程占内存过大,计算机运行过慢的方法
- 为什么说阿里云和亚马逊云对比,阿里云的性价比比较低?
- EasyUI多级表头设置
- linux装软件需要root用户,Linux下非root用户安装软件的一般流程:
- Postgresql - 查询表引用或被引用的外键
- keil写代码时遇到的问题——warning:implicit declaration of function XXXX is invalid in C99
- 安全帽识别系统的应用鹰眸视频分析
- c语言实现strcat函数
- 【CSS】如何让文字与input垂直居中对齐
- 群响刘思毅:如何用 10 个月打造一个 3500 位操盘手的顶级社群
热门文章
- 通信与计算机网络FSC,数据通信与计算机网络概述信道习题.pdf
- python中other_Python other
- python监控网页更新_python监控网页更新
- excel 2007 vba与宏完全剖析_Excel宏VBA小技巧系列 | 分段加合
- 【VC++技术杂谈005】如何与程控仪器通过GPIB接口进行通信
- java接口源码_java collection接口源码
- win服务器文件夹权限设置密码,win服务器 文件夹权限设置
- 高地址和低地址、高字节低字节、大小端模式的转换,存储顺序
- 物理机安装ESXI6.7提示No Network Adapters的解决方案
- java线程自带队列的使用以及线程阻塞