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

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

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

imJackJia发布于 2026/3/24更新于 2026/9/961 浏览
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:  # 过滤空链接
        print(href)

这里加了一个简单的判断,避免打印出空的 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. 七、总结

更多推荐文章

查看全部
  • QClaw 上手指南:OpenClaw 桌面端封装与微信直联体验
  • Moon VR Video Player 使用教程:支持 8K/12K 及多音轨字幕
  • Flutter upnp_client 组件鸿蒙适配:跨设备发现与投屏控制
  • Android 开发者失业 30 天复盘:求职困境与鸿蒙转型之路
  • 算法进阶:一维前缀和原理与实战
  • 深入理解 IDE 中 AI 编程助手的 Session 机制与管理策略
  • SpringBoot 集成 KingbaseES 数据库实践
  • SpringBoot + jQuery 实战:从零搭建留言板
  • OpenClaw 主流厂商产品对比:2026 AI 智能体平台横评
  • CoPaw 个人助理部署与定制实战:从零搭建专属 AI 数字搭档
  • LLaMA-Factory 微调 GPT-OSS-20B 模型教程(AutoDL+LoRA)
  • Neo4j 性能监控实战:5 个关键技巧快速诊断数据库瓶颈
  • Windows 下 Python 最佳实践:或许无需手动安装
  • 分布式与微服务架构下的 Session 同步方案
  • Windows 平台 ComfyUI 环境配置与常见问题排查指南
  • Qwen-Image-Edit-2511 与 Stable Diffusion 图像编辑能力实测对比
  • 双指针算法实战:移动零、快乐数与盛水容器解析
  • VS Code 中 GitHub Copilot 配置与高阶用法实战
  • 基于 C# IOCP 的 485 转 Web API 物联网服务器框架解析
  • DeepSeek-R1 大模型基于 MS-Swift 框架的部署、推理与微调实践

相关免费在线工具

  • 加密/解密文本

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