爬虫的基本原理

所谓爬虫就是一个自动化数据采集工具,你只要告诉它要采集哪些数据,丢给它一个 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. token验证失败_ASP.NET CORE WEBAPI JWT 带BEARER的TOKEN
  2. Python自动化运维:Django Model进阶
  3. windows 10 的安装说明
  4. 退役笔记一#MySQL = lambda sql : sql + #39; Source Code 4 Explain Plan #39;
  5. 【HDU - 2376】Average distance (树,平均距离,算贡献)
  6. 网络采集库NCrawler
  7. sybase 事务 超时返回_事务背景介绍(2):MongoDB中的逻辑会话
  8. paip.提升安全性------本机硬件绑定
  9. c# 数组不能直接=,需要clone
  10. pandaboard 安装_pandaboard---文件系统的建立(4)
  11. 移动开发用户行为分析神器之--AppSee!
  12. 【博学谷学习记录】超强总结,用心分享|Java基础语法week2
  13. 电脑常用的快捷键大全分享。
  14. mysql 日志重做,設置MySQL重做日志大小
  15. VMware安装Windows11专业版详细教程
  16. Git rm和rm --cached区别
  17. 后缀数组水水水水水水题
  18. 关于弹性布局flex
  19. 图像的高频和低频如何区分
  20. 解决了ora-00119和ora-00132这个问题,不容易啊

热门文章

  1. 计算机系统用户里面文件夹带锁,win7文件夹带锁标志如何去除?win7去除文件夹带锁标志的方法...
  2. 2018-9-1-win2d-画出好看的图形
  3. 服务器 '***' 上的 MSDTC 不可用。
  4. Java基于网络爬虫的股票信息收集软件
  5. 深划痕需要大面积补漆吗_棕色车漆划痕怎么处理 车身小面积补漆方法
  6. UBOOT NVME驱动(一路io队列和一路admin队列的例程分析)(未完成)
  7. [018]HackerRank系列 | Shell遍历某个字符串多种用法
  8. json格式的数据转化为字符串
  9. MIKE 21 教程 2.1水动力模型介绍
  10. 利用CMD合并多个VOB文件