跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

Python 爬虫基础知识与 Requests 库使用指南

Python 网络爬虫的基础知识,涵盖爬虫定义、浏览器工作原理对比、爬虫四步工作流程(获取、解析、提取、存储)。重点讲解了 requests 库的使用方法,包括 get 请求、Response 对象属性(status_code、content、text、encoding)、请求头设置(User-Agent)、异常处理及多种数据保存方式(文本、CSV、JSON)。文章旨在帮助初学者建立爬虫系统认知并掌握基础代码实现。

竹影清风发布于 2025/2/6更新于 2026/9/962 浏览
Python 爬虫基础知识与 Requests 库使用指南

前言

网络爬虫(Web Crawler)是互联网数据获取的重要工具。学习爬虫需要掌握一定的 Python 基础语法,包括变量、函数、面向对象编程等。本文将带你系统了解爬虫的基本原理、工作流程以及如何使用 Python 的 requests 库进行数据采集。

初识爬虫

什么是爬虫?

从本质上来说,爬虫就是利用程序自动抓取网络上对我们有价值的数据。爬虫的应用场景非常广泛:

  • 商业分析:例如分析北京近两年二手房成交均价、深圳 Python 工程师平均薪资、某电商平台商品价格趋势等。
  • 生活助手:查询天气、新闻聚合、比价工具等。
  • 搜索引擎核心:百度、谷歌等搜索引擎的核心技术之一就是超级爬虫,它们源源不断地爬取全网网页并存储在服务器上,用户搜索时实际上是在服务器索引中检索信息。

人工智能的发展离不开海量数据,而爬虫正是获取这些数据的关键源头。从搜索巨头到人工智能巨头,爬虫技术在其中扮演了基础性的角色。

为什么需要爬虫?

手动通过浏览器上网下载数据效率低下且难以规模化。爬虫可以模拟人类行为,自动化完成以下任务:

  1. 批量访问目标网站。
  2. 自动解析页面结构。
  3. 提取特定字段数据。
  4. 将数据存储到本地或数据库。

明确学习目标对于学习爬虫至关重要。建议在学习过程中记录自己的需求,如'我想抓取某类商品数据'或'我想分析某社交媒体舆情',这将帮助你在遇到技术瓶颈时保持动力。

浏览器的工作原理

要理解爬虫,首先需要理解浏览器是如何工作的。现代浏览器(以 Chrome 为例)采用多进程架构,以提高稳定性和安全性。

主要进程功能

  • 浏览器进程:负责界面显示、用户交互、子进程管理以及存储功能。
  • 渲染进程:核心任务是将 HTML、CSS 和 JavaScript 转换为用户可见的网页。排版引擎 Blink 和 JavaScript 引擎 V8 运行在该进程中。出于安全考虑,渲染进程通常运行在沙箱模式下,限制其对操作系统的直接访问。
  • GPU 进程:负责图形绘制,用于加速 3D CSS 效果和 UI 渲染。
  • 网络进程:负责页面的网络资源加载,独立出来后能更好地管理网络连接。
  • 插件进程:隔离插件运行,防止插件崩溃影响主浏览器。

浏览器与服务器交互流程

完整的交流过程涉及人、浏览器、服务器三者:

  1. 请求:用户在地址栏输入 URL,浏览器向服务器发起 HTTP 请求。
  2. 响应:服务器处理请求后返回数据(通常是 HTML、JSON 或图片等)。
  3. 解析:浏览器接收数据,将其翻译成可读的页面。
  4. 提取与存储:用户可以从中挑选有用数据并保存。

爬虫的工作原理与浏览器类似,但去除了图形界面部分,专注于数据的获取与处理。

爬虫的工作原理

爬虫可以代劳浏览器工作过程中的关键步骤。其核心工作流程分为四步:

  1. 第 0 步:获取数据 爬虫程序根据提供的网址(URL),向服务器发起 HTTP 请求,获取服务器返回的原始数据(Response)。

  2. 第 1 步:解析数据 将服务器返回的原始数据(如 HTML 源码、JSON 字符串)解析成结构化格式,便于程序读取。

  3. 第 2 步:提取数据 根据预设规则,从解析后的数据中提取出需要的具体字段(如标题、价格、作者等)。

  4. 第 3 步:储存数据 将提取到的数据保存到本地文件(如 TXT、CSV、JSON)或数据库中,以便后续分析和使用。

无论后续学习内容如何深入,这四大步骤始终是爬虫的核心逻辑。

体验爬虫:Requests 库

在 Python 中,requests 是最常用的 HTTP 请求库。它封装了底层复杂的网络细节,提供了简洁的 API。

安装与引入

如果本地未安装,可通过终端命令安装:

pip install requests

在代码中引入库:

import requests

requests.get() 方法

requests.get() 用于发送 GET 请求。基本用法如下:

# 发送请求,参数为 URL
res = requests.get('https://example.com')
  • URL:统一资源定位符,指示网页在网络上的地址。
  • 返回值:一个 Response 对象,包含服务器返回的所有信息。

Response 对象的常用属性

Response 对象是处理数据的核心。以下是四个最常用的属性:

1. status_code(状态码)

检查请求是否成功。常见的状态码包括:

  • 200:请求成功。
  • 404:资源未找到。
  • 500:服务器内部错误。
  • 403:禁止访问。
print(res.status_code)
2. content(二进制内容)

返回响应的二进制数据,适用于下载图片、音频、视频等非文本文件。

# 下载图片示例
pic = res.content
with open('image.jpg', 'wb') as f:
    f.write(pic)
3. text(文本内容)

返回响应的文本内容,适用于网页源代码、API 返回的 JSON 字符串等。

# 获取小说内容
novel = res.text
print(novel[:800])

注意:如果编码识别不正确,可能会出现乱码。

4. encoding(编码设置)

当 text 出现乱码时,可手动指定编码格式。

res.encoding = 'utf-8'
novel = res.text

进阶:Headers 与 User-Agent

许多网站会检测请求头中的 User-Agent,如果检测到是 Python 脚本而非真实浏览器,可能会拒绝服务(返回 403)。因此,设置请求头非常重要。

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
res = requests.get('https://example.com', headers=headers)

进阶:异常处理

网络请求可能因超时、断网等原因失败,必须添加异常处理机制。

try:
    res = requests.get(url, timeout=10)
    res.raise_for_status()  # 如果状态码不是 200,抛出异常
except Exception as e:
    print(f"请求失败:{e}")

进阶:数据存储

除了保存为文本,还可以将数据保存为 CSV 或 JSON 格式,方便数据分析。

保存为 CSV:

import csv

with open('data.csv', 'w', newline='', encoding='utf-8-sig') as f:
    writer = csv.writer(f)
    writer.writerow(['Title', 'Price'])
    writer.writerow(['Example Book', '100'])

保存为 JSON:

import json

data = {'name': 'Spider', 'version': '1.0'}
with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=4)

总结

本文介绍了爬虫的基本概念、浏览器与爬虫的工作流程差异,并详细讲解了如何使用 Python 的 requests 库获取数据、解析响应以及处理常见编码问题。掌握了这些基础知识后,你可以进一步学习正则表达式、BeautifulSoup、XPath 等解析工具,构建更强大的爬虫系统。

在实际开发中,请遵守相关法律法规及网站的 robots.txt 协议,合理控制请求频率,避免对目标服务器造成过大压力。

目录

  1. 前言
  2. 初识爬虫
  3. 什么是爬虫?
  4. 为什么需要爬虫?
  5. 浏览器的工作原理
  6. 主要进程功能
  7. 浏览器与服务器交互流程
  8. 爬虫的工作原理
  9. 体验爬虫:Requests 库
  10. 安装与引入
  11. requests.get() 方法
  12. 发送请求,参数为 URL
  13. Response 对象的常用属性
  14. 1. status_code(状态码)
  15. 2. content(二进制内容)
  16. 下载图片示例
  17. 3. text(文本内容)
  18. 获取小说内容
  19. 4. encoding(编码设置)
  20. 进阶:Headers 与 User-Agent
  21. 进阶:异常处理
  22. 进阶:数据存储
  23. 总结

更多推荐文章

查看全部
  • MCP 协议实战:Browser Tools 插件集成指南
  • Radiomaster Pocket 遥控器资料及 Liftoff 模拟器使用指南
  • Stable Diffusion 之外:3 款主流图像生成工具对比
  • Lostlife2.0下载官网整合LLama-Factory引擎,增强NPC对话逻辑
  • 初识 AI 大语言模型:核心概念与能力解析
  • 腾讯云端 Openclaw 与飞书多机器人配置指南
  • FARS 全自动科研系统:从多智能体架构到工业化科研范式
  • Function Call、Skill 和 MCP:AI 工具链的三层抽象
  • OpenClaw 开源 AI 智能体项目精选与部署指南
  • 基于 AI 辅助的 Java 在线考试系统开发实践
  • 电力巡检设备状态检测数据集:缺陷检测与分类
  • 深入理解链表结构与 Java LinkedList 实现
  • 用 Anthropic 官方 Skill 提升大模型生成前端的审美能力
  • AI 调参技巧:网格搜索优化
  • 哈希表理论基础及经典算法题实战
  • Hadoop 2.x Eclipse 插件编译与安装实战
  • 2026 春晚透视 AI 趋势:智能体元年与普通人应对策略
  • Python 经典面试题与核心知识点详解
  • svn的web管理后台服务svnWebUI
  • Flutter 三方库 discord_interactions 的鸿蒙化适配指南

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online