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

Python 爬虫入门与实战指南

Python 爬虫通过编程自动获取网页信息。基本流程包括发送请求、解析网页和保存数据。常用库有 requests 用于请求、BeautifulSoup 用于解析静态页面。动态页面需使用 Selenium 模拟浏览器,大规模爬取可用 Scrapy 框架。应对反爬机制可添加请求头、设置延迟或使用代理 IP。数据可保存为 CSV 文件或存入数据库如 SQLite。涵盖从入门到进阶的爬虫技术与实战示例。

暗影行者发布于 2026/2/5更新于 2026/10/237.9K 浏览
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. 解释:
  9. 2. 解析网页内容
  10. 解析网页内容
  11. 获取标题
  12. 解释:
  13. 3. 提取更多信息
  14. 获取所有的<a>标签
  15. 打印所有链接
  16. 解释:
  17. 四、爬虫的分类
  18. 1. 简单爬虫(静态网页)
  19. 2. 动态爬虫(处理 JavaScript 生成的内容)
  20. 安装 Selenium:
  21. 示例:
  22. 设置浏览器驱动路径
  23. 打开网页
  24. 获取网页标题
  25. 关闭浏览器
  26. 3. 爬虫框架(Scrapy)
  27. 安装 Scrapy:
  28. 五、爬虫常见问题及解决方案
  29. 1. 网页反爬机制
  30. 解决方法:添加请求头
  31. 2. 延迟访问
  32. 延迟 2 秒后发送下一个请求
  33. 3. 代理 IP
  34. 六、保存数据
  35. 1. 保存到 CSV 文件
  36. 保存数据到 CSV 文件
  37. 2. 保存到数据库
  38. 连接数据库(如果不存在会自动创建)
  39. 创建表
  40. 插入数据
  41. 提交事务并关闭连接
  42. 七、总结

更多推荐文章

查看全部
  • 本地部署大模型与搭建个人知识库指南
  • Python 副业渠道推荐与接单注意事项
  • AI 辅助开发:使用 DeepSeek 构建贪吃蛇游戏
  • 人工智能:语言大模型技术演进与核心原理
  • AI 深度早报:GTC 开幕,Agent 平台与具身智能技术突破
  • PyCharm 安装与配置完整指南
  • Doubao-Seed-Code 接入 Claude Code 本地部署与实战教程
  • 前端如何实现用户回到上次阅读的位置
  • BK7258 对接 LiveKit WebRTC:端侧适配全流程
  • 基于 YOLOv5 的智能目标检测与自动锁定系统
  • MySQL 事务详解:概念、特性与隔离级别
  • TS2320 错误的本质、触发场景与在 Angular / RxJS 项目中的系统化应对
  • Vue 事件修饰符
  • 转行 AI 产品经理:面试核心问题与准备指南
  • 基于 Streamlit 快速搭建腾讯混元 LLM 聊天应用
  • 数据结构初阶:顺序表、链表与时间空间复杂度
  • 前端大数据导出优化:解决 Chrome 内存崩溃的实战方案
  • Android Jetpack LiveData 与 Lifecycle 源码深度解析
  • C++ 哈希表核心解析:冲突解决与实现细节
  • Python 从零实现简单神经网络算法:原理与代码详解

相关免费在线工具

  • 加密/解密文本

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