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

Python 网络爬虫基础教程:从原理到实战

Python 爬虫通过自动请求、解析和存储数据来抓取网页信息。涵盖静态与动态网页处理,介绍 requests、BeautifulSoup、Selenium 及 Scrapy 等核心工具的使用,并包含反爬策略与数据持久化方案。重点讲解了如何绕过基础反爬机制以及将数据保存至本地文件的方法。

JavaCoder发布于 2026/3/21更新于 2026/6/1518 浏览
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 来清洗数据。比如我们要提取页面的标题:

from bs4 import BeautifulSoup

# 解析 HTML 内容
soup = BeautifulSoup(response.text, 'html.parser')
# 获取标题文本
title = soup.title.text
print('网页标题:', title)

运行后会输出类似 网页标题:百度一下,你就知道 的结果。这里的关键在于 soup.title.text,它会自动剥离标签只保留文字。

3. 提取更多信息

除了标题,链接也是常见需求。如果你想抓取页面上所有的文章链接,可以遍历所有 <a> 标签:

# 获取所有链接标签
links = soup.find_all('a')
for link in links:
    href = link.get('href')
    if href:  
        (href)
# 过滤空值
print

注意 link.get('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 能像真人一样点击按钮、滚动页面,适合处理复杂的交互逻辑。记得先安装驱动和库:

pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple 
3. 大规模爬取框架

当任务量变大时,手写脚本效率太低,这时应该上框架。Scrapy 是业界标准的异步爬虫框架,性能强悍,适合构建大型项目。

pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple 
五、应对反爬机制

很多网站有防护策略,直接访问可能会被封禁。这里有几个常用的'通关'技巧。

1. 伪装请求头

服务器通常通过 User-Agent 识别爬虫。我们可以伪造浏览器的标识:

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}
response = requests.get(url, headers=headers)
2. 控制访问频率

频繁请求容易触发 IP 限制,适当延时是必要的礼貌:

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

适合轻量级数据,Excel 就能打开:

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()
七、总结
  1. 流程:请求 → 解析 → 存储。
  2. 工具:requests + BeautifulSoup 搞定静态页;Selenium 处理动态页;Scrapy 应对大规模任务。
  3. 反爬:伪装 UA、设置延时、使用代理是基础三板斧。
  4. 存储:根据数据量选择 CSV 或数据库。

目录

  1. 一、爬虫的基本流程
  2. 二、常用爬虫库
  3. 安装依赖
  4. 三、简单爬虫示例
  5. 1. 获取网页内容
  6. 2. 解析网页内容
  7. 解析 HTML 内容
  8. 获取标题文本
  9. 3. 提取更多信息
  10. 获取所有链接标签
  11. 四、爬虫的分类与进阶
  12. 1. 静态网页爬虫
  13. 2. 动态网页处理
  14. 3. 大规模爬取框架
  15. 五、应对反爬机制
  16. 1. 伪装请求头
  17. 2. 控制访问频率
  18. 3. 代理 IP
  19. 六、数据持久化
  20. 1. 保存到 CSV
  21. 2. 保存到数据库
  22. 七、总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • Transformers 库模型推理与微调实战教程
  • wkhtmltopdf 跨平台安装配置指南:Linux/Windows/macOS
  • Spring Cloud Sentinel 熔断降级核心原理与实战指南
  • 链表环结构存在性证明与 Floyd 算法解析
  • Arch Linux AUR 包管理工具 Paru 使用指南
  • Python 金融量化零基础学习路径与实战指南
  • OpenClaw 多机器人团队协作构建指南
  • 数据结构:栈与队列的实现与 OJ 题解析
  • VS Code GitHub Copilot 不支持自定义模型 API 及搜索功能详解
  • 数据库 SQL 防火墙:拦截率 99.99% 及恶意 SQL 防护
  • 无人机红外图像温度校准与精度优化技术
  • 五大经典排序算法详解:插入、希尔、冒泡、选择与堆排序
  • 乡镇居民诊疗信息系统设计与实现
  • AI Agent 中的 Skills 是什么?有什么用?
  • WebPlotDigitizer 智能图表数据提取工具与科研应用指南
  • Windows 下 Node.js 安装及环境配置
  • C++ 如何计算类的大小
  • 云原生 Neo4j 图数据库从搭建到项目使用深度详解
  • Mastercam 2024 安装与配置指南
  • Stable Diffusion 3.5 提示词语法校验与错误拦截部署指南
  • 相关免费在线工具

    • 加密/解密文本

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