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

Python 爬虫技术入门与实战指南

本文介绍了 Python 爬虫的基础原理与实战技巧。通过 requests 发送请求,利用 BeautifulSoup 解析 HTML 提取标题与链接,涵盖静态页面抓取、动态页面处理及反爬策略应对。内容包含请求头伪装、访问延迟控制、代理 IP 使用等关键细节,并提供 CSV 与 SQLite 两种数据存储方案,帮助开发者快速搭建稳定的数据采集流程。

雪落无声发布于 2026/3/27更新于 2026/9/1066 浏览
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 发送 GET 请求,拿到响应对象后直接读取文本。

import requests

url = 'https://www.baidu.com'
response = requests.get(url)
# 确保编码正确,避免中文乱码
response.encoding = response.apparent_encoding
print(response.text)

这里 response.text 包含了完整的 HTML 代码。实际开发中,建议设置 encoding 属性来防止中文显示异常。

2. 解析 HTML 内容

拿到源码后,用 BeautifulSoup 构建解析树,提取我们关心的数据,比如标题。

from bs4 import BeautifulSoup

soup = BeautifulSoup(response.text, 'html.parser')
title = soup.title.string if soup.title else ''
print(f'网页标题:{title}')

注意,soup.title.string 比 .text 更稳健,能处理一些嵌套标签的情况。

3. 批量提取链接

如果想抓取页面上的所有文章链接,可以遍历所有的 <a> 标签。

links = soup.find_all('a')
for link in links:
    href = link.get('href')
    text = link.get_text(strip=True)
    if href and not href.startswith('#'):
        print(f'{text}: {href}')

这里过滤了以 # 开头的锚点链接,只保留有效跳转地址,同时去除了文本首尾空格。

四、动态页面与反爬策略

有些网站的数据是 JavaScript 动态渲染的,HTML 源码里看不到完整内容。这时需要用到 Selenium 模拟浏览器行为。

1. 使用 Selenium

Selenium 可以控制真实浏览器,执行点击、滚动等操作后再获取页面。

from selenium import webdriver

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

安装驱动前请确保本地已配置好 Chrome 环境。

2. 应对反爬机制

生产环境中,网站通常会设置反爬策略,我们需要针对性处理:

  • 伪装请求头:很多服务器会检查 User-Agent,伪造浏览器标识可绕过简单检测。
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
response = requests.get(url, headers=headers)
  • 控制访问频率:频繁请求容易触发 IP 封禁,加入随机延迟是必要的。
import time
import random

time.sleep(random.uniform(1, 3))
  • 代理 IP:如果单 IP 被封,可以使用代理池轮换请求来源。
proxies = {
    'http': 'http://10.10.1.10:3128',
    'https': 'https://10.10.1.10:1080'
}
response = requests.get(url, proxies=proxies)
五、数据存储方案

数据抓下来后,通常有两种存储方式:文件记录或数据库持久化。

1. CSV 文件

适合轻量级数据导出,直接用 Python 内置 csv 模块即可。

import csv

with open('data.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerow(['标题', '链接'])
    for link in links:
        writer.writerow([link.get_text(strip=True), 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.get_text(strip=True), link.get('href'))
    )

conn.commit()
conn.close()

使用参数化查询 (?) 能有效防止 SQL 注入风险。

六、总结

爬虫开发的核心在于理解 HTTP 协议与 DOM 结构。基础场景下 requests + BeautifulSoup 足够高效;遇到动态加载需引入 Selenium;大规模任务则考虑 Scrapy 框架。同时,务必遵守目标网站的 robots 协议,合理控制请求频率,保持对数据的尊重与合规性。

目录

  1. 一、爬虫的基本流程
  2. 二、常用工具库
  3. 安装依赖
  4. 三、静态页面抓取实战
  5. 1. 获取网页源码
  6. 确保编码正确,避免中文乱码
  7. 2. 解析 HTML 内容
  8. 3. 批量提取链接
  9. 四、动态页面与反爬策略
  10. 1. 使用 Selenium
  11. 2. 应对反爬机制
  12. 五、数据存储方案
  13. 1. CSV 文件
  14. 2. SQLite 数据库
  15. 六、总结

更多推荐文章

查看全部
  • Dify 工作流发布为 MCP Server 实战指南
  • Linux 工程化实战:构建你的第一个命令行工具项目
  • 本地语音识别实战:Whisper 隐私保护与多场景应用
  • 基于 Web 的足球青训俱乐部管理系统设计与实现
  • GraphRAG 论文解读:从局部到全局的查询聚焦摘要生成
  • AIGC 检测模型训练:基于 Python 爬虫构建高质量文本数据集
  • 配置 Cursor 编辑器高效编写 C++ 项目
  • 基于 LLaMA-Factory 和 LoRA 微调 GPT-OSS-20B 模型教程
  • OpenClaw 多智能体路由实战:飞书多机器人配置指南
  • ZeroClaw 开源:基于 Rust 的轻量级 AI Agent 框架
  • 自然语言处理在医疗领域的应用与实战
  • VS Code 配置 GitHub Copilot Agent Skills 实战指南
  • Open Notebook 开源部署指南:接入 Gemini API 管理本地文档
  • AI 绘画描述词风险控制:Qwen3Guard-Gen-8B 前置审核方案
  • 飞算 JavaAI:智能引导与协同交互驱动的 Java 开发提效实践
  • Higress MCP Server 插件:REST API 转换为 AI 工具配置
  • Windows 安装 OpenClaw,配置 Qwen 及 Ollama 模型并接入飞书机器人
  • FPGA 摄像头采集处理显示指南:OV5640 到 HDMI 实时显示
  • 鲁大魔 AI 视频处理工具:安卓端智能二创与去重
  • OpenClaw安装和接入飞书机器人完整教程

相关免费在线工具

  • 加密/解密文本

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