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

文章介绍了HTTP协议在爬虫中的作用,包括请求行、请求头和请求体的构成,以及如何使用Python的requests库发送HTTP请求,获取响应状态行、响应头和响应体。同时,提到了爬虫可能遇到的反爬虫机制及应对策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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

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 年内保证更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想橡皮擦

如有帮助,来瓶可乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值