爬虫的基本原理

所谓爬虫就是一个自动化数据采集工具,你只要告诉它要采集哪些数据,丢给它一个 URL,就能自动地抓取数据了。其背后的基本原理就是爬虫程序向目标服务器发起 HTTP 请求,然后目标服务器返回响应结果,爬虫客户端收到响应并从中提取数据,再进行数据清洗、数据存储工作。

爬虫的基本流程

爬虫流程也是一个 HTTP 请求的过程,以浏览器访问一个网址为例,从用户输入 URL 开始,客户端通过 DNS 解析查询到目标服务器的 IP 地址,然后与之建立 TCP 连接,连接成功后,浏览器构造一个 HTTP 请求发送给服务器,服务器收到请求之后,从数据库查到相应的数据并封装成一个 HTTP 响应,然后将响应结果返回给浏览器,浏览器对响应内容进行数据解析、提取、渲染并最终展示在你面前。


HTTP 协议的请求和响应都必须遵循固定的格式,只有遵循统一的 HTTP 请求格式,服务器才能正确解析不同客户端发的请求,同样地,服务器遵循统一的响应格式,客户端才得以正确解析不同网站发过来的响应。

HTTP 请求格式

HTTP 请求由请求行、请求头、空行、请求体组成。

请求行由三部分组成:

  1. 第一部分是请求方法,常见的请求方法有 GET、POST、PUT、DELETE、HEAD
  2. 第二部分是客户端要获取的资源路径
  3. 第三部分是客户端使用的 HTTP 协议版本号

请求头是客户端向服务器发送请求的补充说明,比如 User-Agent 向服务器说明客户端的身份。

请求体是客户端向服务器提交的数据,比如用户登录时需要提高的账号密码信息。请求头与请求体之间用空行隔开。请求体并不是所有的请求都有的,比如一般的GET都不会带有请求体。

上图就是浏览器登录豆瓣时向服务器发送的HTTP POST 请求,请求体中指定了用户名和密码。

响应行也包含三部分,分别是服务端的 HTTP 版本号、响应状态码、状态说明。

  • 响应状态码常见有 200、400、404、500、502、304 等等,一般以 2 开头的表示服务器正常响应了客户端请求,4 开头表示客户端的请求有问题,5 开头表示服务器出错了,没法正确处理客户端请求。状态码说明就是对该状态码的一个简短描述。
  • 响应头,响应头与请求头对应,是服务器对该响应的一些附加说明,比如响应内容的格式是什么,响应内容的长度有多少、什么时间返回给客户端的、甚至还有一些 Cookie 信息也会放在响应头里面。
  • 响应体,它才是真正的响应数据,这些数据其实就是网页的 HTML 源代码。

小结

这仅仅只是一个爬虫基本原理的介绍,涉及的 HTTP 协议的内容也非常有限,但不可能用一篇文章事无巨细的介绍完,因为 HTTP 协议是一个很大的话题,用一本书也写不完,深入了解推荐两本书《图解HTTP》、《HTTP权威指南》。

大家好 我是爱着你们的萝卜

记得关注我 不定时更新 ❤

微信公众号爬虫的基本原理相关推荐

  1. 基于Python实现微信公众号爬虫进行数据分析

    学爬虫有什么用 网络爬虫是一个非常注重实践性而且实用性很强的编程技能,它不是程序员的专属技能,任何具有一定编程基础的人都可以学习爬虫,写爬虫分析股票走势,上链家爬房源分析房价趋势,爬知乎.爬豆瓣.爬新 ...

  2. 微信公众号爬虫项目(reptile)

    代码仓库地址:reptile: 爬虫项目,微信公众号文章爬虫,网站文章爬虫,群发邮件系统 项目背景 个人在业余时间,写的一个以微信公众号爬虫为主要功能,普通网页爬虫.浏览器控制.邮件群发功能为辅的简单 ...

  3. 【Python爬虫实战】微信公众号爬虫:微信公众号浏览自动化

    本文内容详细介绍微信公众号历史文章自动化浏览脚本的实现,配合服务端对公众号文章数据爬取来实现微信公众号文章数据的采集.服务端爬取实现见:微信公众号爬虫:服务端公众号文章数据采集 背景:在团队的学习方面 ...

  4. 【开源Python爬虫】微信公众号爬虫weixin_crawler开源啦

    作者 | 抽丝剥茧 出品 | 爱迪斯 微信公众号爬虫weixin_crawler开源啦 正式介绍weixin_crawler之前,我准备了两个问题,这两个问题通过weixin_crawler自带的报告 ...

  5. 使用搜狗接口对微信公众号爬虫

    搜狗搜索因为有微信公众号搜索的接口,所以通过这个接口就可以实现公众号的爬虫 需要安装几个python的库:selenium,pyquery 还使用到phantomjs.exe,这个需要我们自己去下载, ...

  6. 微信公众号爬虫,看这个就足够了

    我订阅了 253 个公众号,有时候想再找之前读过的文章,发现搜索起来特别困难,如果忘了收藏,估计得找半小时,更让人无语的是,文章已经发布者删除,或者文章因违规被删除.那么有没有这样的爬虫,可以将公众号 ...

  7. 微信公众号爬虫(综合解决方案)

    最终解决方案 通过搜狗微信先检索公众号,获取公众号主页链接,接着爬每一篇具体文章,具体用selenium实现,当然你也可以用webkit.Geoko渲染引擎自己去渲染.用selenium.webkit ...

  8. python微信公众号爬虫_Python爬取指定微信公众号所有文章!

    篇文章使用到的技术: mitmdump + 电脑版微信 先分析打开可视化抓包工具, 勾选https代理.然后打开电脑版微信 任意点击一个公众号,再点击查看历史消息 注:想学习Python的小伙伴们 可 ...

  9. python微信公众号爬虫_微信公众号推送信息爬取---python爬虫

    问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...

最新文章

  1. [译] 关于 Angular 动态组件你需要知道的
  2. tensorflow2.0的cpu与gpu运行时间对比
  3. C++中string类的length()与size()方法和C语言的strlen()函数有什么区别?
  4. VC++中Format用法
  5. linux网络包截获,用C实现截获网络数据包
  6. Netty技术细节源码分析-MpscLinkedQueue队列原理分析
  7. Ubuntu赋予普通用户特定目录权限
  8. git 报错 Repository Not Found
  9. multisim安装后无法连接数据库_Kepserver连接Mysql教程(一)MySQL5.5数据库安装
  10. C++箴言:多态基类中将析构函数声明为虚拟zz
  11. 新电脑基本软件安装推荐
  12. Mac电脑必备音乐下载工具-洛雪音乐助手lx-music-desktop v1.1.1正式版
  13. ARM GIC(六) GIC V3 电源/功耗管理 分析笔记。
  14. 谷歌chrome浏览器打不开网页,但是其他浏览器可以打开怎么办?
  15. recovery输出log+recovery模式关闭selinux
  16. 挂载阿里云盘到本地目录
  17. Power BI 客户端 安装 错误
  18. 蓝桥杯2018年真题(4)动态规划摔手机
  19. DRAM、NAND Flash、Nor Flash、EEPROM的区别和应用领域
  20. linux exchange 账号,linux exchange服务器配置

热门文章

  1. 【2020】07 留校
  2. oppo 手机侧滑快捷菜单_OPPO又搞什么鬼?离奇上弹、侧滑第二屏!
  3. 图像处理——图像增强(1)
  4. 获取DirectX内部版本号
  5. windows LSP 实现及多个lsp兼容安装的几个坑
  6. python气象绘图速成_Python气象绘图Day-By-Day
  7. CPDA : 数据分析师常见面试题
  8. mysql 1166错误解决
  9. 移动端点击input不触发光标(原生js)
  10. ubuntu 通过脚本使用firefox浏览器批量快速打开网页