众所周知,爬虫的本质是,模拟浏览器打开网页,获取网页中我们需要的那部分数据。

那首先我们应该清楚,普通一般浏览器打开网页的流程和原理是怎样的?

根据生活经验,我们使用浏览器打开网页的步骤一般是这样的

  1. 输入想要访问的网址的链接
  2. 回车之后,略微等待
  3. 得到想要访问的页面

简单的三步背后,底层逻辑是怎样的呢?

图源:https://www.cnblogs.com/malong1992/p/11404396.html;侵删

以百度网页为例,http://www.baidu.com

我们在浏览器中输入网页地址,并敲下回车;

这时,我们向遥远某处的百度服务器发送了一个请求,说“我想要访问这个网页”

百度服务器接受到这个请求后,需要做两件事:

  1. 首先它要读懂请求的内容
  2. 其次它要核查请求的合法性。如果你是正常合法的浏览器,那OK;否则,直接拒绝你的非法请求;(我百度服务器不是可以随随便欺负的,不是什么阿猫阿狗的要求我都满足的,这样会让我很累,加重我的负担和成本,而且会影响其它合法用户的使用)

随后,百度服务器对我们发送的合法请求进行处理,将所需要的信息传递给浏览器浏览器把具体的内容再呈现给用户


上面的整个过程类似于,两个人互相写信

李白发给杜甫一封书信,说“子美啊,我很想你,你什么时候有空,咱俩出去约一顿?"

杜甫收到这封书信后,他得确认一下是不是真的李白写的,而不是冒牌货,所以他要查看这封信的笔迹、印章等特征

网图,侵删

如果查看之后,确认无误,就写一封回信,告诉李白”我这周末就有空,不如黄鹤楼叙叙旧?“

网图,侵删

我们通过浏览器访问页面的原理大致便如此,只是李白换成了浏览器,杜甫换成了服务终端,来往书信换成了各种请求和响应。

这个时候大家要问了:

杜甫可以通过这封书信的字迹、印章等特征,辨别到底是不是真的李白;

那对于服务终端而言,它应该如何辨别传来的请求,是否合法呢?

原理一样,是通过请求自身携带的信息,又称为“请求头”来辨别

请求头一般包括请求的类型(GET还是POST)发出请求的浏览器类型(User-Agent)等基本信息。

远程服务器通过识别请求头信息,来判断你的请求是否合法;类似于,杜甫通过信件的字迹、印章来辨别是不是真的李白的邀请。

而爬虫的核心问题之一,就是通过“模仿请求头”,来使得远程服务器错认为是合法的浏览器的正常访问需求,从而使得我们能够自如地获取所需要的网页信息。

此时有人或许要问,既然人访问不会出错,为什么一定要让机器模拟呢?
事实上,人工访问发起请求确实可以,但需要一次又一次地在浏览器中输入url,成本很高,效率很低;
当我们应用爬虫,可以把想要请求的地址存在一起,然后用Python代码自动请求,这样人工只需要撰写代码即可,效率大大提升。

参考文献

  • 视频资料

    • Python爬虫编程基础5天速成(2021全新合集)Python入门+数据分析

    • 2020年Python爬虫全套课程(学完可做项目)【在用】

  • 文字资料

    • 通过浏览器访问网页的原理

    • http请求头【在用】

    • 超详细教程:什么是HTTP请求头/响应头【在用】

    • 你是如何开始能写 Python 爬虫?【在用】

爬虫小白系列01期: 从李白杜甫,来看爬虫本质 、 浏览器访问网页原理 、 请求头的概念相关推荐

  1. Python爬虫入门6:模拟浏览器访问网页的http报文体压缩传输

    ☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ░ 一.引言 在前面章节中介绍了使用urllib包的request模块访问网页的方法.但上节特 ...

  2. 爬虫-11-伪造电脑访问构建一个请求头

    什么都不做处理,直接请求的效果 经过一翻修饰后,再次请求 比较的结果 直接去拿数据,是拿不到的 需要适当的伪装一下自己 就好比... 七片服务器,带上请求头 直接访问,百度一看是 一个python 在 ...

  3. vba vbscript.regexp加载dll错误_TFS金钥匙系列04期:WPS 加载项之“团队”功能

    随着TFS管理工具在我中心推广使用,越来越多的人开始使用它开展项目管理和缺陷管理等工作,已成为我们日常工作的必备工具.它涵盖的内容广泛,功能丰富,有很多常用功能项是我们日常工作的得力助手. 如何使用T ...

  4. Python爬虫小白教程(二)—— 爬取豆瓣评分TOP250电影

    文章目录 前言 安装bs4库 网站分析 获取页面 爬取页面 页面分析 其他页面 爬虫系列 前言 经过上篇博客Python爬虫小白教程(一)-- 静态网页抓取后我们已经知道如何抓取一个静态的页面了,现在 ...

  5. Python爬虫实战系列(一)-request爬取网站资源

    Python爬虫实战系列(一)-request爬取网站资源 python爬虫实战系列第一期 文章目录 Python爬虫实战系列(一)-request爬取网站资源 前言 一.request库是什么? 二 ...

  6. Node.js爬虫一站到底系列先导篇

    前言: 在web编程课上,老师布置了爬虫任务,而没有任何经验和相关方面知识的小白简直一头雾水,不知道该如何下手.一开始抱着一本厚厚的犀牛书啃了好几天,本以为对Javascipt语法有一定了解后便可以自 ...

  7. 大数据小白系列——HDFS(1)

    [注1:结尾有大福利!] [注2:想写一个大数据小白系列,介绍大数据生态系统中的主要成员,理解其原理,明白其用途,万一有用呢,对不对.] 大数据是什么?抛开那些高大上但笼统的说法,其实大数据说的是两件 ...

  8. 爬虫系列(1):极简爬虫——基于requests和re爬取安居客上海二手房价数据

    爬虫系列(1):极简爬虫--基于requests和re爬取安居客上海二手房价数据 入坑爬虫已经有一年多,一直想好好记录下从各位前辈和大佬处学到的技术,因此开了一个爬虫系列,想借此细致地介绍和演示其中的 ...

  9. 两周从爬虫小白变大神,看完你就知道我不是标题党了【五万字教程,建议收藏】

    大家好,我是辣条,今天给大家带来最硬核的爬虫教程. 目录 Python爬虫第一天 什么是爬虫 爬虫与Web后端服务之间的关系 Python爬虫技术的相关库 常见反爬虫的策略 爬虫库urllib[重要] ...

最新文章

  1. python交互模式设置及VIM的tab补齐
  2. Asp.net Ajax AutoComplete 控件的用法
  3. Haar特征与积分图—概念解析
  4. 轻量级java web实践-6(框架源码-4)
  5. Core Data 学习笔记(二)被管理对象模型
  6. 数据科学(data science)概览
  7. python基础装饰器_Python基础之装饰器
  8. 使用Vibrator控制手机振动
  9. 理解 asyncio 来构建高性能 Python 网络程序 - Ricequant米筐量化
  10. 2019.08-2020.06计算机考研指导总结篇
  11. MFC按方向键旋转立方体线框
  12. 虚拟现实(VR)技术的升级应用|时空克隆 三维视频融合 投影融合 点卯 魔镜系列
  13. 编程制作动态壁纸的思路_Android应用源码动态壁纸开发必看例子源码
  14. iOS打包神器fastlane安装
  15. 2022中国汽车品牌魅力指数排名:广汽传祺、吉利、东风风行、荣威位居自主品牌前列 | 美通社头条...
  16. 如何独立开发 APP 赚钱?
  17. poj2391 Ombrophobic Bovines 拆点连边要注意
  18. MySQL自学笔记详细版(从安装到入门)
  19. 雷电模拟器一键宏实现循环点击
  20. 备份iPhone的照片和资料

热门文章

  1. [原]数据科学教程:R语言与NoSQL
  2. js、jQuery面试题整理
  3. 2022论文题目(2022年议论文写作)
  4. ubuntu重启和关机命令
  5. 什么样的外贸词容易做推广?
  6. 邻域保持嵌入(NPE)
  7. 浅谈OI中的提交答案
  8. 从零开始实现一个IDL+RPC框架
  9. 基于android平台的斗地主AI
  10. visual paradigm 时序图实用技巧