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

Python 爬虫入门指南:原理、工具与实战示例

Python 爬虫技术通过模拟浏览器请求获取网页数据,核心流程包含发送请求、解析 HTML 及保存结果。涵盖 requests 与 BeautifulSoup 基础用法,演示静态页面抓取,并介绍 Selenium 处理动态内容、Scrapy 框架应对大规模任务。同时提供反爬策略如 User-Agent 伪装、访问延迟及代理 IP 方案,最后展示 CSV 与 SQLite 数据存储实现。

imJackJia发布于 2026/3/24更新于 2026/10/2288 浏览
Python 爬虫入门指南:原理、工具与实战示例

Python 爬虫入门指南

爬虫技术本质是通过编程自动从网页获取信息。简单来说,当你打开网页查看源代码时,看到的 HTML 结构就是爬虫工作的对象。它像一位不知疲倦的机器人,帮你阅读并提取这些内容。

本文将带你从零开始编写 Python 爬虫,即使是编程新手也能理解核心逻辑。

一、爬虫的基本流程

一个标准的爬虫工作流通常包含三个步骤:

  1. 发送请求:向目标网页发起 HTTP 请求,获取原始内容。
  2. 解析网页:从返回的 HTML 或 JSON 中提取你需要的数据。
  3. 保存数据:将提取到的信息写入文件或数据库,方便后续分析。

二、常用爬虫库

在 Python 生态中,开发爬虫主要依赖以下两个库:

  • requests:负责发送网络请求,获取网页源码。
  • BeautifulSoup:用于解析 HTML,快速定位和提取标签内的数据。

安装依赖

在终端执行以下命令即可安装(使用清华源加速):

pip install requests beautifulsoup4 -i https://pypi.tuna.tsinghua.edu.cn/simple

三、简单爬虫实战

我们从一个具体的例子入手,抓取百度首页的信息。

1. 获取网页内容

首先使用 requests 获取页面源码。注意,直接打印 response.text 会看到大量 HTML 代码,这就是页面的结构。

import requests

url = 'https://www.baidu.com'
response = requests.get(url)
print(response.text)

2. 解析网页内容

拿到源码后,用 BeautifulSoup 解析 HTML,提取标题。

from bs4 import BeautifulSoup

# 初始化解析器
soup = BeautifulSoup(response.text, 'html.parser')
# 获取标题文本
title = soup.title.text
print('网页标题:', title)

运行结果类似:

网页标题:百度一下,你就知道

3. 提取更多链接

除了标题,我们还可以遍历所有 <a> 标签,提取网站内的链接。这在抓取文章列表时非常有用。

links = soup.find_all('a')
for link in links:
    href = link.get('href')
    if href:  # 过滤空链接
        (href)
print

这里加了一个简单的判断,避免打印出空的 None 值,实际项目中建议根据需求做更精细的清洗。

四、爬虫分类与进阶

1. 静态网页爬虫

如果数据直接写在 HTML 里,上面的方法就足够了。这是最基础的爬虫类型。

2. 动态网页处理

很多现代网站的数据是通过 JavaScript 动态加载的,HTML 源码里可能没有最终内容。这时需要模拟浏览器行为,Selenium 是常用的选择。

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.example.com')
print(driver.title)
driver.quit()

注意:使用 Selenium 前需确保本地已配置好 ChromeDriver 驱动路径。

3. 大规模爬取框架

当任务量变大,需要高并发和异步处理时,推荐使用 Scrapy 框架。它内置了中间件、管道等组件,适合构建复杂的爬虫系统。

pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple

五、应对反爬机制

网站为了防止数据被滥用,通常会设置一些防御措施。以下是几种常见的应对方案。

1. 伪装请求头

默认情况下,Python 的请求头会被识别为脚本。添加 User-Agent 可以伪装成普通浏览器。

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'
}
response = requests.get(url, headers=headers)

2. 控制访问频率

频繁请求容易触发 IP 封禁。使用 time.sleep() 设置延迟是必要的。

import time
time.sleep(2)  # 每次请求间隔 2 秒

3. 使用代理 IP

如果单个 IP 被封,可以使用代理池切换出口地址。

proxies = {
    'http': 'http://10.10.1.10:3128',
    'https': 'https://10.10.1.10:1080',
}
response = requests.get(url, proxies=proxies)

六、数据存储

提取到的数据通常需要持久化存储,CSV 和数据库是最常见的两种形式。

1. 保存到 CSV

适合轻量级数据导出。

import csv

with open('data.csv', 'w', newline='', encoding='utf-8') as file:
    writer = csv.writer(file)
    writer.writerow(['标题', '链接'])  # 表头
    for link in links:
        writer.writerow([link.text, link.get('href')])

2. 保存到 SQLite

适合结构化数据的长期管理。

import sqlite3

conn = sqlite3.connect('data.db')
cursor = conn.cursor()

# 建表
cursor.execute('''CREATE TABLE IF NOT EXISTS links 
                  (title TEXT, href TEXT)''')

# 插入数据
for link in links:
    cursor.execute('INSERT INTO links (title, href) VALUES (?, ?)', 
                   (link.text, link.get('href')))

conn.commit()
conn.close()

七、总结

爬虫的核心在于理解 HTTP 协议与 HTML 结构。通过 requests 和 BeautifulSoup 可以快速上手静态页面;遇到动态渲染可转向 Selenium;大规模任务则考虑 Scrapy。同时,合理设置请求头、延迟和代理是保证爬虫稳定运行的关键。掌握这些基础,你就能开始构建自己的数据采集工具了。

目录

  1. Python 爬虫入门指南
  2. 一、爬虫的基本流程
  3. 二、常用爬虫库
  4. 安装依赖
  5. 三、简单爬虫实战
  6. 1. 获取网页内容
  7. 2. 解析网页内容
  8. 初始化解析器
  9. 获取标题文本
  10. 3. 提取更多链接
  11. 四、爬虫分类与进阶
  12. 1. 静态网页爬虫
  13. 2. 动态网页处理
  14. 3. 大规模爬取框架
  15. 五、应对反爬机制
  16. 1. 伪装请求头
  17. 2. 控制访问频率
  18. 3. 使用代理 IP
  19. 六、数据存储
  20. 1. 保存到 CSV
  21. 2. 保存到 SQLite
  22. 建表
  23. 插入数据
  24. 七、总结

更多推荐文章

查看全部
  • Unity 无人机物理模拟开发:打造穿越机真实手感
  • 2024年AI大模型时代C端应用生态变局与产业创新价值分析
  • ZeroClaw: 基于 Rust 的轻量级 AI 助手网关,与 OpenClaw 对比分析
  • Vue3 中方法调用失效的排查与修复方案
  • 优雅降级 vs 渐进增强:前端兼容策略的“道”与“术”
  • phpStudy 下载与安装教程
  • Spatial Joy 2025 全球 AR&AI 开发大赛参赛指南与资源盘点
  • Qwen3Guard-Gen-8B 内容安全模型及 Python 集成方案
  • CTF 网络安全竞赛学习路线与进阶指南
  • Rust 异步测试与调试实战指南
  • Java 零基础入门教程:环境搭建、语法与实战
  • SECS/GEM 通信构建:C++ 协议解析与性能优化实战
  • 基于 CLIProxyAPI 与 New API 的 AI 模型中转站搭建指南
  • 基于 SpringBoot+Vue 的网上摄影工作室系统设计与实现
  • Python 文件操作:Markdown 格式处理
  • 机场出租车调度问题的数学建模与 Python 仿真实现
  • CISP 全类别证书详细介绍
  • MySQL 主从复制与高可用架构实战
  • IDEA 配置多 Git 账号实现项目隔离提交与拉取
  • C++ 红黑树核心原理与插入实现详解

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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