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

Python 爬虫入门教程:从零开始学习网络数据采集

介绍 Python 网络爬虫的基础原理与实现方法。涵盖环境搭建、使用 Requests 库发送 HTTP 请求、利用 BeautifulSoup 解析 HTML 结构、通过 Selenium 处理 JavaScript 动态加载页面,以及将数据保存为 JSON 或 CSV 格式。教程强调编写爬虫时需遵守目标网站的 robots.txt 协议及相关法律法规,避免高频访问导致封禁,并提供完整的代码示例与错误处理方案,适合初学者系统掌握爬虫技术。

Stephaine Walsh发布于 2025/2/7更新于 2026/7/1840 浏览
Python 爬虫入门教程:从零开始学习网络数据采集

Python 爬虫入门教程:从零开始学习网络数据采集

随着互联网技术的飞速发展,数据已成为信息时代的核心资产。网络爬虫(Web Scraper)作为一种自动化采集网络数据的工具,在数据分析、市场调研及学术研究等领域发挥着重要作用。Python 凭借其简洁的语法和强大的生态库,成为编写网络爬虫的首选语言。

本教程将带你从零开始学习 Python 爬虫,掌握基本的爬虫技术、解析方法及数据存储方案,并强调合规使用的重要性。

1. 准备工作

在学习 Python 爬虫之前,建议具备以下基础知识:

  • Python 编程基础:熟悉基本语法、变量、函数、列表、字典等数据结构。
  • 网络基础知识:了解 HTTP 协议、请求方法(GET/POST)、状态码、HTML/CSS 结构等基本概念。

1.1 环境搭建

确保已安装 Python 3.x 版本。推荐使用虚拟环境管理依赖,例如使用 venv 或 conda。

python -m venv crawler_env
source crawler_env/bin/activate  # Windows: crawler_env\Scripts\activate

1.2 安装必要库

常用的爬虫相关库包括 requests(发送请求)、beautifulsoup4(解析 HTML)、selenium(处理动态页面)。

pip install requests beautifulsoup4 selenium lxml

2. 编写第一个爬虫程序

接下来,我们将编写一个简单的爬虫程序,用于获取网页内容并解析其中的信息。

2.1 发送 HTTP 请求

使用 requests 库发送 GET 请求。为了模拟真实浏览器行为,通常需要设置 User-Agent 头部,避免被服务器拦截。

import requests
from bs4 import BeautifulSoup

url = 'http://example.com'
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'
}

try:
    response = requests.get(url, headers=headers, timeout=10)
    response.raise_for_status()  # 如果状态码不是 200,则抛出异常
    response.encoding = response.apparent_encoding  # 自动识别编码
    
    soup = BeautifulSoup(response.text, 'html.parser')
    title = soup.title.string if soup.title else 'No Title'
    print(f"网页标题:{title}")
except Exception as e:
    print(f"请求失败:{e}")

3. 解析网页内容

爬虫程序的核心是解析网页内容。Beautiful Soup 是一个强大的解析库,它可以帮助我们从 HTML 或 XML 文件中提取数据。

3.1 标签导航与查找

# 假设 html_doc 为获取到的网页源码
soup = BeautifulSoup(html_doc, 'html.parser')

# 提取所有链接
links = soup.find_all('a')
for link in links[:5]:  # 仅打印前 5 个
    href = link.get('href')
    text = link.get_text(strip=True)
    print(f"链接:{href}, 文本:{text}")

# 提取段落内容
paragraphs = soup.find_all('p')
for p in paragraphs:
    content = p.get_text(strip=True)
    if content:
        print(f"段落:{content[:50]}...")  # 限制输出长度

3.2 CSS 选择器

Beautiful Soup 支持 CSS 选择器,可以更灵活地定位元素。

# 查找 class 为 'content' 的 div 下的所有 h2 标签
items = soup.select('div.content h2')
for item in items:
    print(item.get_text())

4. 处理动态内容

有些网页的内容是通过 JavaScript 动态加载的,此时静态请求无法获取完整数据。我们需要使用 Selenium 等工具来模拟浏览器行为。

4.1 Selenium 基础用法

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 初始化 Chrome 驱动
options = webdriver.ChromeOptions()
options.add_argument('--headless')  # 无头模式,不显示浏览器窗口
driver = webdriver.Chrome(options=options)

try:
    driver.get('http://example.com')
    
    # 等待特定元素出现
    wait = WebDriverWait(driver, 10)
    element = wait.until(EC.presence_of_element_located((By.ID, "main-content")))
    
    html = driver.page_source
    print(html[:500])  # 打印部分源码
finally:
    driver.quit()

5. 数据存储

爬取的数据需要持久化存储,常见的格式包括 JSON、CSV 和数据库。

5.1 保存为 JSON

import json

data = [
    {"id": 1, "name": "Item A", "price": 100},
    {"id": 2, "name": "Item B", "price": 200}
]

with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=4)

5.2 保存为 CSV

import csv

with open('data.csv', 'w', newline='', encoding='utf-8-sig') as f:
    writer = csv.DictWriter(f, fieldnames=['id', 'name', 'price'])
    writer.writeheader()
    writer.writerows(data)

6. 进阶技术与最佳实践

掌握了基本技术后,可以进一步学习如何处理表单提交、登录认证、反爬虫机制等高级技术。

6.1 Session 管理

使用 Session 对象可以保持 Cookie 和连接池,提高请求效率。

session = requests.Session()
response = session.get(url, headers=headers)

6.2 反爬虫策略应对

  • IP 代理:使用代理池轮换 IP 地址。
  • 请求频率控制:使用 time.sleep() 随机延迟,避免高频访问。
  • 验证码处理:对于简单验证码可尝试 OCR 识别,复杂验证码需人工介入。

6.3 错误重试机制

import time
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

session = requests.Session()
retry = Retry(total=3, backoff_factor=1, status_forcelist=[500, 502, 503, 504])
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)

7. 法律与道德规范

编写爬虫时,务必遵守相关法律法规及目标网站的 robots.txt 协议。

  1. robots.txt:检查网站根目录下的 /robots.txt 文件,确认允许爬取的路径。
  2. 版权保护:不得爬取受版权保护的敏感数据用于商业用途。
  3. 隐私保护:严禁爬取用户个人隐私信息(如手机号、身份证等)。
  4. 服务影响:控制并发量,避免对目标服务器造成拒绝服务攻击(DDoS)。

结语

通过本教程,你已经初步了解了 Python 爬虫的基本原理和技术实现。从环境搭建到数据解析,再到动态页面处理和存储,这些构成了爬虫开发的基础知识体系。希望本教程能够帮助你进入网络爬虫的世界,发现数据的价值和无限可能性。在实际开发中,请始终遵循合法合规的原则,尊重数据所有权。

目录

  1. Python 爬虫入门教程:从零开始学习网络数据采集
  2. 1. 准备工作
  3. 1.1 环境搭建
  4. 1.2 安装必要库
  5. 2. 编写第一个爬虫程序
  6. 2.1 发送 HTTP 请求
  7. 3. 解析网页内容
  8. 3.1 标签导航与查找
  9. 假设 html_doc 为获取到的网页源码
  10. 提取所有链接
  11. 提取段落内容
  12. 3.2 CSS 选择器
  13. 查找 class 为 'content' 的 div 下的所有 h2 标签
  14. 4. 处理动态内容
  15. 4.1 Selenium 基础用法
  16. 初始化 Chrome 驱动
  17. 5. 数据存储
  18. 5.1 保存为 JSON
  19. 5.2 保存为 CSV
  20. 6. 进阶技术与最佳实践
  21. 6.1 Session 管理
  22. 6.2 反爬虫策略应对
  23. 6.3 错误重试机制
  24. 7. 法律与道德规范
  25. 结语
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 人形机器人:从万物可机器人化到终极通用平台的百万亿赛道逻辑
  • Spring Boot 启动引导类:命名约定与底层启动原理
  • Poe 平台:Quora 推出的 AI 模型整合工具
  • Python 数据清洗实战:缺失值、异常值与格式处理
  • 鸿蒙系统 PC 版安装与使用指南
  • GESP C++ 一级考试全流程及编程题核心模板
  • WSL2 环境下 Git 与 Gitee 代码管理实战
  • Android 应用视觉优化:10 个 UI 技巧
  • MySQL 核心原理与实战进阶指南
  • Qwen1.5-0.5B-Chat 轻量模型本地部署与 WebUI 实战
  • 使用 Dexie 操作前端 IndexedDB 数据库教程
  • AR/VR 展项与实体展陈融合施工工艺及交互校准技术
  • 主流大模型介绍(GPT、Llama、ChatGLM、Qwen、deepseek)
  • 单链表应用:经典算法题与通讯录实现
  • GitHub 代码文件抓取与数据可视化实践(Python 实现)
  • 基于 SpringBoot 的协同过滤电影推荐系统
  • OpenClaw 对接飞书机器人配置问题排查:消息不回复与 Gateway 断开
  • 使用星辰 RPA 构建小红书自动发文机器人
  • 2026 年 3 月 18 日 AI 产业前沿动态:算力、智能体与生态变革
  • 数据结构实战:选择排序原理与 Java 实现

相关免费在线工具

  • 加密/解密文本

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

  • Gemini 图片去水印

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

  • curl 转代码

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

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online