跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
Python算法

Python 入门实战:从零编写你的第一个网络爬虫

利用 Python 的 requests 和 BeautifulSoup 库,演示构建基础网页爬虫的完整流程。涵盖环境配置、请求发送、HTML 解析及数据提取步骤,同时强调爬虫伦理与法律边界,适合编程初学者快速上手并理解网络数据采集原理。

leon发布于 2026/3/27更新于 2026/4/262 浏览
Python 入门实战:从零编写你的第一个网络爬虫

什么是网络爬虫

简单来说,爬虫就是自动抓取网页数据的程序。它模拟浏览器行为,向服务器发送请求,获取 HTML 源码,然后从中提取我们需要的信息。对于初学者来说,理解这个流程是掌握数据抓取的第一步。

核心工作流程

一个完整的爬虫通常包含四个步骤:

  1. 发送请求:构造 HTTP 请求(GET/POST),带上必要的 Headers(如 User-Agent)。
  2. 获取响应:接收服务器返回的原始数据(通常是 HTML、JSON 或 XML)。
  3. 解析数据:利用正则表达式或解析库(如 BeautifulSoup)从源码中定位并提取目标内容。
  4. 存储结果:将清洗后的数据保存到本地文件、数据库或内存变量中。

环境准备

在开始之前,确保你已安装 Python 3.x。接着安装两个核心库:requests 用于处理网络请求,beautifulsoup4 用于解析 HTML。

pip install requests beautifulsoup4

如果安装过程中遇到网络问题,可以尝试使用国内镜像源加速。

代码实战:抓取一个简单的页面

让我们写一个最基础的脚本,去抓取 httpbin.org 上的示例页面。这里不直接爬取商业网站,而是用公开测试接口来演示逻辑,避免法律风险。

import requests
from bs4 import BeautifulSoup

# 设置目标 URL
url = 'https://httpbin.org/html'

# 构建请求头,伪装成浏览器,防止被简单拦截
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}

try:
    # 发送 GET 请求
    response = requests.get(url, headers=headers, timeout=10)
    
    # 检查状态码,200 表示成功
    if response.status_code == 200:
        # 设置编码,防止中文乱码
        response.encoding = response.apparent_encoding
        html_content = response.text
        
        # 初始化解析器
        soup = BeautifulSoup(html_content, 'html.parser')
        
        # 查找特定标签,例如 h1 标题
        title_tag = soup.find('h1')
        if title_tag:
            print(f"抓取的标题是:{title_tag.get_text().strip()}")
        else:
            print("未找到 h1 标签")
    else:
        print(f"请求失败,状态码:{response.status_code}")

except Exception as e:
    print(f"发生错误:{e}")

代码解读:

  • timeout=10 是为了防止网络卡死导致程序无限等待。
  • apparent_encoding 让 BeautifulSoup 尝试自动识别编码,比硬编码更安全。
  • get_text().strip() 能去掉多余的空白字符,让输出更整洁。

爬虫伦理与法律边界

技术本身是中性的,但使用方式有界限。作为开发者,必须遵守以下原则:

  • 尊重 robots.txt:查看目标网站的协议文件,不要抓取禁止爬取的目录。
  • 控制频率:不要高频并发请求,以免给服务器造成压力(DDoS 攻击嫌疑)。
  • 隐私保护:严禁抓取用户个人隐私数据。
  • 版权意识:抓取的数据仅用于学习或合法用途,不得侵犯原作者权益。

掌握基础后,你可以进一步研究动态加载页面(Selenium)、反爬策略应对等进阶内容。保持好奇心,同时守住底线,这才是工程师应有的素养。

目录

  1. 什么是网络爬虫
  2. 核心工作流程
  3. 环境准备
  4. 代码实战:抓取一个简单的页面
  5. 设置目标 URL
  6. 构建请求头,伪装成浏览器,防止被简单拦截
  7. 爬虫伦理与法律边界
  • 💰 8折买阿里云服务器限时8折了解详情
  • 💰 8折买阿里云服务器限时8折购买
  • 🦞 5分钟部署阿里云小龙虾了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • 轻量级日历组件 Calendar.js 集成指南
  • Telegram 搜索机器人搭建指南(含 Python 脚本)
  • Cloudflare + Ingress + 自签名证书实现域名代理与流量限制
  • GitHub Copilot 在 VS Code 上的使用指南:从安装到高阶配置
  • Pico 4XVR 1.10.13 安装与使用指南
  • Python+Agent 入门实战:搭建可复用 AI 智能体
  • RoboBrain2.0 具身大脑模型复现:统一感知、推理与规划能力
  • Robot Lab 基于 Isaac Lab 的机器人强化学习使用指南
  • VSCode 远程连接 Linux 服务器进行 C++ 调试的配置指南
  • ToClaw 与 OpenClaw:AI 数字助理的功能定位对比
  • C++ 核心就业方向与职业发展
  • ROS 2 机器人运行指南:海龟仿真器与 ros2 run 命令解析
  • Open WebUI Docker 部署指南与最佳实践
  • Linux 深入剖析 System V IPC 进程间通信机制
  • 位运算算法实战:6 道经典题目详解(字符唯一性、缺失数字等)
  • 分库分表避坑指南:垂直分库与水平分表策略及实战
  • 视觉 - 骨架双模态框架用于帕金森病步态的泛化评估
  • 蓝桥杯 C/C++ 组备考:C++ 基础知识入门(上)
  • Django+Vue3 前后端分离 Web 视觉系统:集成 YOLO 与 LLM 大模型智能分析
  • ERNIE-4.5-0.3B:文心一言轻量级大模型的技术解析与部署

相关免费在线工具

  • 加密/解密文本

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