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

Python 爬虫从零入门实战指南

Python 爬虫技术主要涉及网络请求、HTML 解析及数据存储三个核心环节。通过 requests 库发送 HTTP 请求获取网页源码,利用 BeautifulSoup 或 Scrapy 框架提取目标数据,最终可保存至 CSV 文件或数据库。针对动态页面需结合 Selenium 模拟浏览器行为,面对反爬机制则可通过设置 User-Agent、IP 代理及访问延迟来规避限制。掌握基础流程后,即可根据实际需求构建静态或动态数据采集方案。

1951018925发布于 2026/3/27更新于 2026/4/264 浏览
Python 爬虫从零入门实战指南

爬虫是指通过编程自动从网页上获取信息的技术。简单来说,当你打开网页右键查看源代码时,那些 HTML 代码就是网页的结构,而爬虫就像一位帮你阅读这些内容的'机器人'。

本文将详细讲解如何从零开始编写一个 Python 爬虫,即使是完全没接触过编程的朋友也能理解。

一、爬虫的基本流程
  1. 发送请求:爬虫向目标网页发送请求,获取网页内容。
  2. 解析网页:从返回的网页内容中提取你需要的信息。
  3. 保存数据:将提取到的信息保存到文件或数据库中,以便后续分析。
二、常用爬虫库

在 Python 中,有两个非常流行的库用于爬虫开发:

  • requests:用于发送网络请求,获取网页内容。
  • BeautifulSoup:用于解析网页内容,提取需要的数据。
1. 安装库

首先,你需要安装这两个库。在命令行中执行以下命令:

pip install requests beautifulsoup4 -i https://pypi.tuna.tsinghua.edu.cn/simple
三、简单爬虫示例

接下来,我们会编写一个简单的爬虫,从一个网页上获取数据。

1. 获取网页内容

第一步是使用 requests 库来获取网页的内容。我们以获取百度首页为例。

import requests

# 发送请求获取网页内容
url = 'https://www.baidu.com'
response = requests.get(url)

# 打印网页内容
print(response.text)

原理说明:

  • requests.get(url) 用于向指定网址发送请求并获取网页内容。
  • response.text 返回网页的 HTML 代码。

运行后,你会看到大量的 HTML 代码,这就是百度首页的内容。

2. 解析网页内容

获取网页内容后,我们需要用 BeautifulSoup 库来解析 HTML,提取我们需要的信息。接下来我们解析百度首页的标题。

from bs4 import BeautifulSoup

# 解析网页内容
soup = BeautifulSoup(response.text, 'html.parser')

# 获取标题
title = soup.title.text
print('网页标题:', title)

原理说明:

  • BeautifulSoup(response.text, 'html.parser') 用于解析 HTML 内容。
  • soup.title.text 返回网页的标题。

输出结果如下:

网页标题:百度一下,你就知道
3. 提取更多信息

让我们继续提取网页中的链接(<a>标签中的 href 属性)。这非常有用,例如你想抓取某个网站上的所有文章链接。

# 获取所有的<a>标签
links = soup.find_all('a')

# 打印所有链接
for link in links:
    href = link.get('href')
    print(href)

原理说明:

  • soup.find_all('a') 用于获取网页中的所有链接。
  • link.get('href') 获取每个链接的 href 属性,也就是网址。
四、爬虫的分类
1. 简单爬虫(静态网页)

如果网页是静态的,所有的数据直接在 HTML 代码中呈现,这种网页最容易爬取。以上示例就是一个典型的静态网页爬虫。

2. 动态爬虫(处理 JavaScript 生成的内容)

有些网页的数据不是直接在 HTML 中,而是通过 JavaScript 动态生成的。这类网页需要更复杂的处理方式,通常我们会使用 Selenium 这样的库来模拟浏览器操作。

安装 Selenium:
pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple

Selenium 可以像真实的用户一样与网页交互,甚至可以点击按钮、滚动页面等。比如要爬取动态生成的数据,我们可以使用 Selenium 来加载网页。

示例:
from selenium import webdriver

# 设置浏览器驱动路径
driver = webdriver.Chrome()

# 打开网页
driver.get('https://www.example.com')

# 获取网页标题
print(driver.title)

# 关闭浏览器
driver.quit()
3. 爬虫框架(Scrapy)

当你需要大规模爬取数据时,可以使用专门的爬虫框架——Scrapy。Scrapy 是一个强大的爬虫框架,具有异步、高效的特点,适合用于构建复杂的爬虫。

安装 Scrapy:
pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple
五、爬虫常见问题及解决方案
1. 网页反爬机制

有些网站不允许爬虫访问,通常会通过检测请求头或 IP 地址来防止爬虫访问。为了绕过这种限制,我们可以伪装成正常用户。

解决方法:添加请求头
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. 延迟访问

频繁访问某个网站可能会触发反爬机制,我们可以通过设置延迟避免这种问题。

import time

# 延迟 2 秒后发送下一个请求
time.sleep(2)
3. 代理 IP

如果网站通过检测 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

# 保存数据到 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 用于解析 HTML。
  3. 进阶技术:处理动态网页需要用到 Selenium,而大规模爬取可以使用 Scrapy 框架。
  4. 应对反爬:通过伪装请求头、设置延迟以及使用代理 IP 等方式绕过反爬机制。

目录

  1. 一、爬虫的基本流程
  2. 二、常用爬虫库
  3. 1. 安装库
  4. 三、简单爬虫示例
  5. 1. 获取网页内容
  6. 发送请求获取网页内容
  7. 打印网页内容
  8. 2. 解析网页内容
  9. 解析网页内容
  10. 获取标题
  11. 3. 提取更多信息
  12. 获取所有的<a>标签
  13. 打印所有链接
  14. 四、爬虫的分类
  15. 1. 简单爬虫(静态网页)
  16. 2. 动态爬虫(处理 JavaScript 生成的内容)
  17. 安装 Selenium:
  18. 示例:
  19. 设置浏览器驱动路径
  20. 打开网页
  21. 获取网页标题
  22. 关闭浏览器
  23. 3. 爬虫框架(Scrapy)
  24. 安装 Scrapy:
  25. 五、爬虫常见问题及解决方案
  26. 1. 网页反爬机制
  27. 解决方法:添加请求头
  28. 2. 延迟访问
  29. 延迟 2 秒后发送下一个请求
  30. 3. 代理 IP
  31. 六、保存数据
  32. 1. 保存到 CSV 文件
  33. 保存数据到 CSV 文件
  34. 2. 保存到数据库
  35. 连接数据库(如果不存在会自动创建)
  36. 创建表
  37. 插入数据
  38. 提交事务并关闭连接
  39. 七、总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • 💰 8折买阿里云服务器限时8折购买
  • 🦞 5分钟部署阿里云小龙虾了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • Python 机器学习案例:利用 SVD 压缩梵高《星空》图片
  • Ubuntu 部署 OpenClaw 指南
  • Rust 实战:异步爬取 GitHub Trending 热门仓库
  • GitHub Copilot 学生认证指南:免费获取 Pro 版权限
  • Notepad++ 直连 SAP SE80 提升 BSP/WebClient UI 视图维护效率
  • OpenClaw.ai:Agentic AI 时代的 Spring Framework 时刻
  • PyApp:将 Python 工程打包为可执行文件的简易方法
  • Ollama 本地部署 DeepSeek-R1-Distill-Llama-8B 实战
  • 实证分析系列:稳健性检验的常用方法与 Python 实现
  • 分布式光纤声波传感(DAS)无人机入侵探测技术与应用
  • Linux 下 OpenClaw 安装、初始化及 Web UI 配置指南
  • FastAPI 实现 Python 前后端交互:用户登录注册与信息查看
  • TwinRL-VLA:数字孪生驱动的机器人强化学习与现实应用
  • 哈希表经典算法题整理
  • AI 无人机智慧巡检平台:20+ 场景识别与全流程调度方案
  • C++ 动态规划:调手表问题求解
  • Metric3D v2: 零样本单目度量深度与表面法线估计几何基础模型
  • 法律领域自然语言处理(NLP)应用与实战
  • Webots 2025a 与 ROS 2 Jazzy e-puck 机器人集成教程
  • llama.cpp 大模型部署指南:CPU/GPU 兼容与 Docker 快速启动

相关免费在线工具

  • 加密/解密文本

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