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

Python 爬虫入门:从原理到实战解析

Python 爬虫技术涵盖请求发送、网页解析与数据存储三大核心环节。利用 requests 获取静态页面,配合 BeautifulSoup 提取信息;动态网页需借助 Selenium 模拟浏览器行为。面对反爬机制,可通过设置 User-Agent、访问延迟及代理 IP 进行规避。最终数据可保存至 CSV 文件或 SQLite 数据库,为后续分析提供基础。

ArchDesign发布于 2026/3/27更新于 2026/8/2436 浏览
Python 爬虫入门:从原理到实战解析

爬虫技术本质是通过编程自动获取网页信息。当你打开网页查看源代码时,那些 HTML 结构就是爬虫的目标对象。它像一位不知疲倦的机器人,帮你阅读并提取网页内容。

一、爬虫的基本流程

整个流程其实很直观,主要分为三步:

  1. 发送请求:向目标网页发起 HTTP 请求,拿到原始内容。
  2. 解析网页:从返回的 HTML 或 JSON 中定位并提取所需数据。
  3. 保存数据:将清洗后的信息写入文件或数据库,方便后续处理。
二、核心工具库

Python 生态里有几个非常成熟的库,足以应对大部分场景:

  • requests:负责网络通信,发送请求和接收响应。
  • BeautifulSoup:擅长解析 HTML/XML,快速定位标签。
安装准备

在终端执行以下命令即可(清华源镜像能提升国内下载速度):

pip install requests beautifulsoup4 -i https://pypi.tuna.tsinghua.edu.cn/simple
三、实战:抓取静态页面

我们先写一个最简单的脚本,以百度首页为例,看看如何把网页内容拿下来。

1. 获取内容

使用 requests 发送 GET 请求,拿到响应对象后直接读取文本。

import requests

url = 'https://www.baidu.com'
response = requests.get(url)
print(response.text)

这里 response.text 会返回完整的 HTML 源码。运行后你会看到一大段代码,这就是网页的结构。

2. 解析数据

拿到源码后,用 BeautifulSoup 来'读'懂它。比如我们要提取标题:

from bs4 import BeautifulSoup

# 初始化解析器
soup = BeautifulSoup(response.text, 'html.parser')
# 获取 title 标签内的纯文本
title = soup.title.text
print('网页标题:', title)

输出结果类似:

网页标题:百度一下,你就知道
3. 批量提取链接

如果想抓取页面上所有的文章链接,可以遍历所有 <a> 标签:

links = soup.find_all('a')
for link in links:
    href = link.get('href')
    if href:  # 过滤空值
        print(href)

注意这里加了个判断,因为有些链接可能是空的或者相对路径,实际项目中可能需要进一步处理。

四、进阶场景与框架
动态网页处理

很多现代网站的数据是 JavaScript 动态渲染的,HTML 源码里看不到完整内容。这时候 requests 就力不从心了,得用 Selenium 模拟真实浏览器行为。

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.example.com')
print(driver.title)
driver.quit()

Selenium 能执行点击、滚动等操作,适合爬取加载后生成的数据。记得提前配置好 ChromeDriver。

大规模爬取:Scrapy

当需要高并发、异步处理时,建议直接使用 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'
}
response = requests.get(url, headers=headers)
2. 控制频率

频繁请求容易触发 IP 封禁。加入随机延迟是个好习惯:

import time
import random

time.sleep(random.uniform(1, 3))  # 随机等待 1-3 秒
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 和数据库是最常用的两种方式。

CSV 文件

适合轻量级数据,直接用 Python 标准库就能写:

import csv

with open('data.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerow(['标题', '链接'])
    for link in links:
        writer.writerow([link.text, link.get('href')])
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 VALUES (?, ?)', (link.text, link.get('href')))

conn.commit()
conn.close()
七、总结

爬虫开发的核心在于理解 HTTP 协议与 DOM 结构。基础场景用 requests + BeautifulSoup 足矣;涉及动态渲染则需 Selenium;大规模任务交给 Scrapy。同时要注意遵守法律法规,合理设置访问频率,避免对目标站点造成压力。掌握这些工具,你就能轻松搭建自己的数据采集 pipeline。

目录

  1. 一、爬虫的基本流程
  2. 二、核心工具库
  3. 安装准备
  4. 三、实战:抓取静态页面
  5. 1. 获取内容
  6. 2. 解析数据
  7. 初始化解析器
  8. 获取 title 标签内的纯文本
  9. 3. 批量提取链接
  10. 四、进阶场景与框架
  11. 动态网页处理
  12. 大规模爬取:Scrapy
  13. 五、反爬机制应对
  14. 1. 伪装请求头
  15. 2. 控制频率
  16. 3. 代理 IP
  17. 六、数据存储
  18. CSV 文件
  19. SQLite 数据库
  20. 七、总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • 树莓派智能家居中控系统构建指南
  • 嵌入式 C/C++ 核心考点:内存管理、多态与系统调用
  • AI 工具导航网站源码:纯前端实现与 SEO 优化
  • ComfyUI InstantID 换脸进阶:FaceDetailer + IP-Adapter 工作流
  • 利用 NotebookLM 快速生成 PPT 与动漫风格漫画
  • LLM 的核心能力与局限性分析:推理、规划及世界模型
  • llama.cpp CUDA 编译问题排查与性能优化指南
  • 7 款热门 Claude Skills 开源工具:GitHub 精选技能库
  • Manacher 算法详解:求解最长回文子串
  • Flink 实时计算案例:TxPayMatchByJoin
  • 2026 年 AI 写作工具深度测评:主流模型与平台对比
  • MySQL 高可用集群搭建实战:双主双活 + Keepalived
  • 大语言模型基础与前沿:从 Devin 看 LLM 技术发展与未来趋势
  • C++ 虚继承
  • 基于STM32的智能家居环境监测与控制系统设计
  • 算法基础:前缀和原理与 Java 实现
  • C++ 二维差分解决矩阵区间更新问题
  • Android Studio 安装及组件配置:SDK、JDK 与 Gradle
  • 前端 WebSocket 实战指南:告别轮询,拥抱实时通信
  • AirSim 无人机仿真平台零基础部署实战指南

相关免费在线工具

  • 加密/解密文本

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