爬虫基本知识的认知(爬虫流程 HTTP构建)| 爬虫理论课,附赠三体案例

news2024/9/21 20:52:29

爬虫是指通过程序自动化地从互联网上获取数据的过程。
基本的爬虫流程可以概括为以下几个步骤:

  1. 发送 HTTP 请求:通过 HTTP 协议向指定的 URL 发送请求,获取对应的 HTML 页面。
  2. 解析 HTML 页面:使用 HTML 解析器对获取的 HTML 页面进行解析,提取出需要的数据。
  3. 存储数据:将解析出来的数据存储到本地或者数据库中,以供后续分析或使用。

HTTP 协议是爬虫获取数据的基础,爬虫程序需要构造 HTTP 请求,发送到目标服务器,获取数据并进行解析。
HTTP 请求主要由请求头请求体组成:

  • 请求头包含请求方法、目标 URL、HTTP 版本号以及请求头信息等;
  • 请求体则是携带了请求参数和请求数据。

在构造 HTTP 请求时,需要注意目标网站可能会对爬虫进行限制,如设置反爬虫机制,通过增加请求头中的 User-Agent 字段、设置请求时间间隔、使用代理 IP 等方式可以降低被限制的风险。

文章目录

    • HTTP 协议介绍
    • http 协议 请求行,请求头,请求体
    • HTTP 协议响应

HTTP 协议介绍

HTTP(HyperText Transfer Protocol)是一种应用层协议,用于在客户端和服务器之间传输超文本数据。
HTTP 协议是一个基于请求-响应模型的协议,客户端发送 HTTP 请求到服务器,服务器返回 HTTP 响应。

HTTP 请求由三部分组成:请求行请求头请求体

  • 请求行包括请求方法、URL 和 HTTP 版本号;
  • 请求头包括一些关于请求的元数据,比如 User-Agent、Cookie 等;
  • 请求体则包含请求的数据。

HTTP 响应也由三部分组成:状态行响应头响应体

  • 状态行包括响应的状态码和状态文本;
  • 响应头包括一些关于响应的元数据,比如 Server、Content-Type 等;
  • 响应体则包含响应的数据。

下面是一个简单的使用 Python 发送 HTTP GET 请求的例子:

import requests

url = 'http://pachong.vip'
response = requests.get(url)
print(response.status_code)  # 打印状态码
print(response.headers)  # 打印响应头
print(response.text)  # 打印响应体

上面的代码使用 requests 库发送一个 HTTP GET 请求到 pachong.vip,并输出了状态码、响应头和响应体。
requests 库是 Python 中用于发送 HTTP 请求的常用库,它提供了简单易用的 API,可以轻松地发送 HTTP 请求并处理 HTTP 响应。

写python爬虫,你永远绕不过去代理问题

http 协议 请求行,请求头,请求体

HTTP 请求可以分为三部分:请求行、请求头和请求体

如果 HTTP 协议是一部动漫的话,请求行就相当于开头的标题,请求头就相当于主演的演员表,请求体就是动漫的具体内容。

请求行包含三个部分,分别是请求方法、请求 URL 和 HTTP 协议版本。

把请求行想象成向一个迷路的人询问路线的场景,请求方法就是你说的话,“请问去哪里”请求 URL 就是你想去的目的地,“我要去机场”,HTTP 协议版本就是你们沟通的语言,“用中文交流”

请求头可以包含多个键值对,用来传递请求的附加信息,比如 User-Agent、Referer 等。

把请求头想象成你在约会时候的小手册,里面包含了你的身份、约会地点等信息。如果你带上了自己的照片,那么 User-Agent 就相当于照片里的头像,是你的标识;Referer 就相当于你约会时对方提供的位置,让你更清楚地了解约会地点的信息。

请求体是 POST 请求中传递参数的部分

把请求体想象成你向对象表白时的话语,里面包含了你的真心话。比如你向喜欢的人表白时说的“我喜欢你”,这句话就相当于请求体中的内容。

如果你使用 Python 发送 HTTP 请求,可以使用 requests 库。下面是一个例子,访问爬虫训练场

import requests

url = "http://pachong.vip"
response = requests.get(url)

print(response.content)

HTTP 协议响应

当我们使用 Python 进行网络爬取时,经常需要通过 HTTP 请求来获取服务器返回的数据。而服务器返回的响应通常也是由三部分组成:状态行、响应头和响应体。

下面是一个用 Python 模拟发送 HTTP 请求,并获取响应的示例代码:

import requests

# 发送 HTTP 请求
response = requests.get('https://pachong.vip')

# 获取响应状态行
status_line = response.status_code

# 获取响应头
headers = response.headers

# 获取响应体
content = response.text

print(f'响应状态行:{status_line}')
print(f'响应头:{headers}')
print(f'响应体:{content}')

这个代码中,使用 Python 的 requests 库来发送 HTTP 请求,获取了服务器返回的响应。
然后通过 response.status_code、response.headers 和 response.text 分别获取了响应的状态行、响应头和响应体,并将它们打印输出。

如果将这个场景生活化,例子如下。

  • 我们请求了三体的官网,服务器给你回了一份响应,这份响应分为三个部分,就像是三体人对你的回答。

  • 第一条是状态行,相当于三体人告诉你了这个回答的状态,比如是成功还是失败。就像是三体人告诉你他们有没有你想要的技术。

  • 第二条是响应头,相当于三体人告诉你一些额外的信息,比如他们的地址、星球坐标等等,就像是三体人告诉你一些和技术无关但是你也需要知道的信息。

  • 第三条响应体,相当于三体人给你展示了他们的星球,比如是充满火或者是充满水的图片。

当你收到这份响应之后,你可以根据里面的信息决定接下来该怎么做,是继续呆着还是逃跑。

📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 1122 篇原创博客

从订购之日起,案例 5 年内保证更新

  • ⭐️ Python 爬虫 120,点击订购 ⭐️
  • ⭐️ 爬虫 100 例教程,点击订购 ⭐️

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/357794.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux shell 入门学习笔记4 shell运维和编程语言

shell 运维和编程语言 脚本注释 shell脚本中,#后面的内容表示注释内容,一般是给开发者或使用者观看,解释器会忽略此部分内容注释可以单独写一行,也可以跟在文件末尾保持注释的习惯,尽量使用英文 例子: #…

C++类和对象(2)构造、析构函数

类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 class Date{}; 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员 函数。 默认成员函数:用户没有显式实现&…

什么是健康建筑?

WIKIPEDIA健康建筑是指支援建筑和建筑环境中人们,身体、心理和社会健康与福祉的新兴兴趣领域。建筑物可以成为健康和福祉的关键促进者,因为大多数人大部分时间都花在室内。根据全美国人类活动模式调查,美国人「平均 87% 的时间花在封闭的建筑…

redis-如何保证数据库和缓存双写一致性?

前言 数据库和缓存(比如:redis)双写数据一致性问题,是一个跟开发语言无关的公共问题。尤其在高并发的场景下,这个问题变得更加严重。 我很负责的告诉大家,该问题无论在面试,还是工作中遇到的概率…

windows版Rsync服务端和客户端cwRsync_4.1.0安装测试

下载地址:https://download.csdn.net/download/qq_32421489/87463506 服务端安装: cwRsyncServer(服务端)配置步骤 1.双击运行wRsyncServer_4.1.0_Installer.exe。 2.这里创建的账户是操作系统的,创建的这个账户是专…

【 RA4M2开发板环境搭建之串口下载1】

【 RA4M2开发板环境搭建1】1. 前言1.1 活动来源1.2 开发环境1.3 RA4M2开发板2. MDK环境准备2.1 keil 5下载安装2.2 安装RA4M2的软件支持包2.3 Renesas Flash Programmer安装3. RA Smart Configurator配置3.1 下载RA Smart Configurator3.2 安装RA Smart Configurator4. 新建RA4…

你是真的“C”——C语言详解求两个正数最小公倍数的3种境界

C语言详解求两个正数最小公倍数的3种境界~😎前言🙌必备小知识~😘求最小公倍数境界1~ 😊求最小公倍数境界2~ 😊求最小公倍数境界3~ 😊总结撒花💞博客昵称:博客小梦😊 最喜…

[Incognito 4.0] ictf 2023

一周4赛,有点赶不过来呀。只做了一点,队长组队的时候(每次都中间断掉,一大堆写的都得从头来)CryptoAncient这样的第2次见,第1次就不会,这回看了队友wp终于知道是怎么加密的了Templed每个符号可以表示4位10进制数。原题…

〖产品思维训练白宝书 - 核心竞争力篇⑭〗- 产品经理核心竞争力解读之学习能力

大家好,我是 哈士奇 ,一位工作了十年的"技术混子", 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬 &#x1f4e…

路径规划 | 图解跳点搜索JPS算法(附ROS C++/Python/Matlab仿真)

目录0 专栏介绍1 A*算法的弊端2 跳点搜索算法2.1 自然与强制邻点2.2 跳点剪枝策略3 算法仿真与实现3.1 算法流程3.2 ROS C实现3.3 Python实现3.4 Matlab实现0 专栏介绍 🔥附C/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细…

2. Unity操作基础知识

1. 创建新项目 双击打开 unity hub管理器,点击左侧栏中的 项目 选项卡,在右上角点击 新项目 按钮,进入项目创建页面: 在项目创建页面中,选择合适的模板,并设置项目名称,选择项目保存位置&…

【郭东白架构课 模块一:生存法则】12|法则五:如何提升一个架构设计的外部适应性?

你好,我是郭东白。 上节课我们讲了外部适应性这个概念,也强调了架构师的职责是通过架构活动为企业不断注入外部适应性,从而帮助企业更好地实现它的战略意图。 那么该怎么注入呢? 上节课在讲影响技术体系外部适应性的因素这部分…

MYSQL---第四次索引视图

学生表:Student (Sno, Sname, Ssex , Sage, Sdept) 学号,姓名,性别,年龄,所在系 Sno为主键 课程表:Course (Cno, Cname,) 课程号,课程名 Cno为主键 学生选课表:SC (…

AtCoder Beginner Contest 290 A-E F只会n^2

ABC比较简单就不再复述 D - Marking 简要题意 :给你一个长度为nnn的数组,下标为0到n−10 到 n-10到n−1,最初指针位于0,重复执行n-1次操作,每次操作的定义为将当前指针加上ddd,如果该位置为空(未填数),否则我们向右找到第一个为空…

《刀锋》读书笔记

刀锋(毛姆长篇作品精选)毛姆50个笔记点评认为好看的确是完美的结局。《刀锋》里面的人每个人都以自己的方式生活着。艾略特的势利,拉里的自由,伊莎贝尔的现实,苏珊的清醒,索菲的堕落,至于“我”…

【数据结构与算法】链表2:节点交换与删除 链表相交 环形链表

文章目录今日任务1.Leetcode24:两两交换链表中的节点(1)题目(2)思路(3)代码实现2.Leetcode19:删除链表的倒数第N个节点(1)题目(2)思路…

芯片架构RISC-V、X86、ARM三足鼎立

2022 年 7 月,RISC-V 国际基金会首席执行官 Calista Redmond 在嵌入式世界大会上宣布 RISC-V 架构处理器核的出货数量已突破 100 亿颗。 序号架构特点代表性的厂商运营机构发明时间1X86性能高,速度快,兼容性好英特尔,AMD英特尔197…

nginx-服务器banner泄漏风险

http { server_tokens off; # 隐藏Nginx版本号 .... }

桌面美化方案分享+环境配置记录

桌面美化方案分享环境配置记录 旧笔记本是高考结束时候买的,做工稀烂,买来当天键盘就被我敲坏了。当时送去维修,那边的人说暂时没货,要等键盘进货才能换。然后等了四年,键盘还没进到货。 该换了。 旧笔记本上显卡是…

【Vue3源码】第二章 effect功能的完善补充

【Vue3源码】第二章 effect功能的完善补充 前言 上一章节我们实现了effect函数的功能stop和onstop,这次来优化下stop功能。 优化stop功能 之前我们的单元测试中,stop已经可以成功停止了响应式更新(清空了收集到的dep依赖) st…