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

news/2024/7/19 9:30:04 标签: 爬虫, http, python, 网络协议, 网络
http://www.w3.org/2000/svg" style="display: none;">

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

  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 请求的例子:

python">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 响应。

https://img-blog.csdnimg.cn/9a307ba1cfde4d22b4515dad52775138.jpeg" alt="写python爬虫,你永远绕不过去代理问题" />

http___52">http 协议 请求行,请求头,请求体

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

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

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

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

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

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

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

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

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

python">import requests

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

print(response.content)

HTTP 协议响应

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

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

python">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.niftyadmin.cn/n/81520.html

相关文章

华为OD机试题 - 去除多余空格(JavaScript)| 代码+思路+重要知识点

最近更新的博客 华为OD机试题 - 字符串加密(JavaScript) 华为OD机试题 - 字母消消乐(JavaScript) 华为OD机试题 - 字母计数(JavaScript) 华为OD机试题 - 整数分解(JavaScript) 华为OD机试题 - 单词反转(JavaScript) 使用说明 参加华为od机试,一定要注意不要完全背…

MyBatis基本使用

一、简介 MyBatis 中文文档 https://mybatis.org/mybatis-3/zh/index.html 1.什么是 MyBatis 概述:MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBa…

Keychron K3 Pro键盘测评

目录 0.开箱 1.Keychron K3 Pro介绍 2.产品特点 2.1轻薄机身轴体解锁多场景办公 2.2 支持QMK/VIA开源改键蓝牙/有线双模客制化机械键盘 ​2.3支持MacOS/Windows系统秒切换不卡顿 2.4同时适配3台设备可快速切换 ​2.5支持QMK/VIA改键 2.6 超轻薄佳达隆矮轴,触感新体验 …

煤矿风险监测预警算法 YOLO

煤矿风险监测预警算法基于YOLO网络模型视觉分析,煤矿风险监测预警算法7*24小时不间断自动识别现场人员作业行为、着装合规情况以及传送皮带撕裂跑偏等风险异常情况。我们使用YOLO(你只看一次)算法进行对象检测。YOLO是一个聪明的卷积神经网络(CNN),用于实…

Debezium系列之:基于debezium采集数据到kafka,再从kafka将数据流式传输到下游数据库

Debezium系列之:基于debezium采集数据到kafka,再从kafka将数据流式传输到下游数据库 一、需求背景二、准备Debezium集群和相关jar包的详细步骤三、查看插件是否加载成功四、源数据库表结构五、根据源数据库表结构准备目标数据库的表六、基于debezium采集数据到kafka七、查看c…

隐私计算头条周刊(2.13-2.19)

开放隐私计算收录于合集#企业动态44个#周刊合辑44个#政策聚焦37个#隐私计算91个#行业研究36个开放隐私计算开放隐私计算OpenMPC是国内第一个且影响力最大的隐私计算开放社区。社区秉承开放共享的精神,专注于隐私计算行业的研究与布道。社区致力于隐私计算技术的传播…

龙腾万里,福至万家——“北京龙文化促进协会第九届龙抬头传承会”在京举办

2023年2月21日(农历2月初二)上午9:00点至下午13:00,由北京龙文化促进协会主办、传世经典(北京)文化发展有限公司承办、北京华夏龙文旅联盟协办的“北京龙文化促进协会第九届二月二龙抬头传承会”在北京市丰台区顺和国际大厦A口6层会议厅隆重召开。 传承会活动内容主…

基于DCMM制定的数据治理管理办法

第一章 总则 第一条 为了提高我行经营管理的信息化水平,贯彻执行数据管理体系规划,规范数据管理和具体实施流程,加强各级经营管理机构的数据管理和应用能力,树立和发挥数据的资产价值,特制定本办法。 第二条 本办法…