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

Python 爬虫入门实战:从请求到数据保存

Python 爬虫技术通过编程自动获取网页信息。核心流程包括发送请求、解析内容、保存数据。常用库有 requests 和 BeautifulSoup,分别负责网络通信与 HTML 解析。针对静态网页可直接解析,动态页面需 Selenium 模拟浏览器,大规模任务推荐 Scrapy 框架。应对反爬机制可调整请求头、设置访问延迟或使用代理 IP。数据最终可存储为 CSV 文件或存入 SQLite 数据库。掌握这些基础即可构建实用的数据采集工具。

安卓系统发布于 2026/3/27更新于 2026/6/1116 浏览
Python 爬虫入门实战:从请求到数据保存

Python 爬虫入门实战

爬虫技术通过编程自动从网页获取信息。简单来说,当你查看网页源代码时看到的 HTML 结构就是爬虫的目标对象,它像一位机器人帮你阅读并提取内容。

一、基本流程

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

  1. 发送请求:向目标网页发起 HTTP 请求,获取原始内容。
  2. 解析网页:从返回的 HTML 或 JSON 中提取所需数据。
  3. 保存数据:将提取的信息存储到文件或数据库中。

二、核心库与安装

Python 生态中有两个最常用的库:requests 负责网络通信,BeautifulSoup 负责 HTML 解析。

在终端执行以下命令即可安装(推荐使用国内镜像加速):

pip install requests beautifulsoup4 -i https://pypi.tuna.tsinghua.edu.cn/simple

三、实战示例

1. 获取网页内容

首先使用 requests 抓取百度首页。这里直接打印响应文本,你会看到大量的 HTML 源码。

import requests

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

注意:实际开发中建议检查 response.status_code 确保请求成功。

2. 解析页面标题

拿到 HTML 后,用 BeautifulSoup 解析。我们尝试提取 <title> 标签的内容。

from bs4 import BeautifulSoup

soup = BeautifulSoup(response.text, 'html.parser')
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)

这里用 get('href') 比直接访问属性更安全,防止某些标签没有该属性导致报错。

四、进阶场景处理

静态与动态网页

上述例子针对的是静态网页。如果数据由 JavaScript 动态加载(如滚动加载更多),浏览器渲染后的 DOM 才是真实数据。此时可以使用 Selenium 模拟浏览器行为。

from selenium import webdriver

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

大规模爬取框架

当任务量变大时,手动写脚本效率较低,建议使用 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
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 文件

适合轻量级结构化数据。

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 (title, href) VALUES (?, ?)', 
                   (link.text, link.get('href')))

conn.commit()
conn.close()

七、总结

爬虫的核心在于理解 HTTP 协议与 HTML 结构。基础阶段掌握 requests 和 BeautifulSoup 足以应对大部分静态站点;遇到动态渲染需引入 Selenium;生产环境则推荐 Scrapy。同时务必遵守法律法规,合理设置访问频率,避免对目标服务器造成压力。

目录

  1. Python 爬虫入门实战
  2. 一、基本流程
  3. 二、核心库与安装
  4. 三、实战示例
  5. 1. 获取网页内容
  6. 2. 解析页面标题
  7. 3. 批量提取链接
  8. 四、进阶场景处理
  9. 静态与动态网页
  10. 大规模爬取框架
  11. 五、反爬机制应对
  12. 1. 伪装请求头
  13. 2. 控制访问频率
  14. 3. 使用代理 IP
  15. 六、数据存储
  16. CSV 文件
  17. SQLite 数据库
  18. 七、总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • 企业级 Code RAG 与代码库 Copilot 深度架构指南
  • voidImageViewer:轻量级图像查看器,支持 GIF/WEBP 动画播放
  • IndexTTS 2.0 打造精准对齐的机器人说唱:Ableton Live 实战
  • FPGA CARRY4 抽头延迟链 TDC 延时仿真
  • cJSON 1.7.19 源码剖析:数据结构、解析生成与注释规范
  • 动态规划专题:子序列问题的核心思路与实战
  • 基于 YOLOv8/v11 与 LLM 的 Web 视觉检测系统 (Django+Vue3)
  • 6 克 ESP32 微型无人机:手机 Wi-Fi 遥控系统设计与实现
  • 牛客 NC221681 dd 爱框框:滑动窗口实战解析
  • AI Agent 安全漏洞与 Claude Code 编程范式转移
  • Pi0 机器人 VLA 大模型在昇腾 A2 平台上的测评
  • Python 面向对象编程三大特性:封装、继承与多态的 15 道实战练习题
  • Qwen2.5-Coder:阿里开源的个性化编程助手
  • 滑动窗口算法详解与经典例题实战
  • Moectf2025 Web、Misc 与 Crypto 解题思路汇总
  • Windows 版 nvm 安装配置与 Node.js 多版本管理教程
  • AI 写作发展趋势与展望
  • Immutable.js 实战:React 状态管理与避坑指南
  • AI 辅助 Java 入门:开发环境配置与核心语法实战
  • Apache IoTDB 跨端边云架构与 DB+AI 融合实践

相关免费在线工具

  • 加密/解密文本

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