当前位置: 首页 > news >正文

爬虫数据存储全攻略:从 Robots 协议到文件存储

爬虫在获取网页数据后,如何高效、合规地存储数据?这是爬虫开发的关键环节。本文将从爬虫的 “行为规范”(Robots 协议)讲起,详细介绍两种常用的文件存储方式(TXT、CSV),并附 Python 实战代码,帮你搞定数据存储的全流程。

一、爬虫的 “潜规则”:Robots 协议

在爬取数据前,首先要遵守 Robots 协议(机器人协议),这是网站与爬虫之间的 “约定”,避免因违规爬取引发法律风险或服务器负载问题。

  1. 什么是 Robots 协议?
    它是一个名为 robots.txt 的文本文件,放在网站根目录下,用于告诉爬虫:哪些页面可以爬,哪些不行。例如京东的 robots.txt 会限制某些路径的爬取(如 /pinpai/*.html)。

  2. 协议内容怎么看?
    核心规则由 User-agent(目标爬虫)、Disallow(禁止爬取的路径)、Allow(允许爬取的路径)组成。
    示例(某网站的 robots.txt):

    User-agent: *  # 对所有爬虫生效
    Disallow: /cgi-bin/  # 禁止爬取 /cgi-bin/ 目录
    Disallow: /tmp/      # 禁止爬取 /tmp/ 目录
    Allow: /public/      # 允许爬取 /public/ 目录
    
  3. 如何查看网站的 Robots 协议?
    直接在网站域名后加 /robots.txt,例如:

    • 百度:https://www.baidu.com/robots.txt
    • 京东:https://www.jd.com/robots.txt
  4. 必须遵守吗?
    协议本身不具备法律强制性,但违规可能面临法律风险(如侵犯数据产权)或被网站封禁 IP,建议遵守。

二、TXT 文件存储:简单直接的 “入门款”

TXT 是最基础的文件存储格式,适合存储结构化不强的文本数据(如网页源码、日志)。

  1. 优缺点分析

    • 优点:操作简单,兼容所有平台,适合快速保存数据;
    • 缺点:检索困难,不适合存储表格类数据(如多字段的列表)。
  2. Python 操作 TXT 文件
    用内置的 open() 函数即可实现读写,关键是掌握 文件打开模式

    模式功能描述
    r只读(文件不存在则报错)
    w写入(覆盖原有内容,文件不存在则创建)
    a追加(在文件末尾添加内容,文件不存在则创建)
    r+读写(文件不存在则报错)
    a+读写(追加模式)

    示例(爬取网页并保存为 TXT):

    import requests# 爬取网页内容
    url = "http://www.cqie.edu.cn/html/2/xydt/"
    response = requests.get(url)
    response.encoding = "utf-8"  # 解决中文乱码# 保存到 TXT
    with open("news.html", "w", encoding="utf-8") as f:f.write(response.text)  # 写入网页源码
    
  3. 技巧

    • 多字段数据可用 \t(制表符)分隔,便于后续解析;
    • 路径推荐用绝对路径(如 D:/data/news.txt),避免路径错误。
三、CSV 文件存储:表格数据的 “最佳拍档”

CSV(逗号分隔值)是存储结构化数据的理想格式,本质是纯文本,但以表格形式组织(类似 Excel),可被 Excel、Python 等工具直接解析。

  1. 优缺点分析

    • 优点:结构化清晰,支持多字段,可被 Excel 打开,适合存储列表类数据(如用户信息、商品列表);
    • 缺点:功能简单,不支持公式或单元格样式。
  2. Python 操作 CSV 文件
    用标准库 csv 或第三方库 pandas 实现,后者更简洁。

    • 方法一:用 csv 库
      示例(写入学生信息):

      import csv# 写入 CSV
      with open("students.csv", "w", encoding="utf-8", newline="") as f:writer = csv.writer(f)writer.writerow(["学号", "姓名", "年龄"])  # 标题行writer.writerow(["2023001", "张三", 20])writer.writerow(["2023002", "李四", 19])
      
    • 方法二:用 pandas 库
      适合处理大量数据,支持直接转为 DataFrame 操作:

      import pandas as pd# 数据字典
      data = {"学号": ["2023001", "2023002"],"姓名": ["张三", "李四"],"年龄": [20, 19]
      }
      # 转为 DataFrame 并保存
      df = pd.DataFrame(data)
      df.to_csv("students_pandas.csv", index=False)  # index=False 去除行索引
      
  3. 实战案例:爬取新闻列表并存储为 CSV
    步骤:

    1. 爬取网页源码;
    2. 用 lxml 解析出新闻标题、链接;
    3. 写入 CSV 文件。

    核心代码:

    import requests
    from lxml import etree
    import csvurl = "http://www.cqie.edu.cn/html/2/xydt/"
    response = requests.get(url)
    html = etree.HTML(response.text)# 解析新闻标题和链接
    titles = html.xpath("//a[@class='news-title']/text()")
    links = html.xpath("//a[@class='news-title']/@href")# 写入 CSV
    with open("news.csv", "w", encoding="utf-8", newline="") as f:writer = csv.writer(f)writer.writerow(["标题", "链接"])for title, link in zip(titles, links):writer.writerow([title, link])
    
四、如何选择存储方式?
  • 临时保存、非结构化数据(如网页源码)→ 选 TXT;
  • 结构化数据(多字段列表)、需要后续分析 → 选 CSV;
  • 大量数据或需要复杂查询 → 考虑数据库(如 MySQL、MongoDB)。
小结

数据存储是爬虫开发的 “收尾工作”,既要遵守 Robots 协议确保合规,也要根据数据特点选择合适的存储格式。TXT 简单直接,CSV 适合表格数据,掌握这两种方式,足以应对大部分爬虫场景。下次我们将探讨数据库存储,带你处理更复杂的数据分析需求。

http://www.dtcms.com/a/331435.html

相关文章:

  • C++11新特性深度解析
  • Linux软件下载菜单脚本
  • Effective C++ 条款41:理解隐式接口和编译期多态
  • 系统设计——DDD领域模型驱动实践
  • 深入浅出词向量(Word2Vec):从理论到实践
  • 数据结构初阶(13)排序算法-选择排序(选择排序、堆排序)(动图演示)
  • 【Java 后端】Spring Boot 集成 JPA 全攻略
  • HTTPS 工作原理
  • 电池充放电测试仪厂家:技术深耕与场景驱动的行业进阶
  • Java使用Apache POI读取Excel文件
  • Vue浅学
  • 深入解析 GitHub Actions 工作流文件编写:从入门到实战
  • 简单的 HTTPS 学习
  • 第四天-创建一个Classic CAN(经典CAN2.0)/CANFD的系统描述ARXML文件
  • 读From GPT-2 to gpt-oss: Analyzing the Architectural Advances
  • IPv6互联网地址解析
  • 从合规到卓越:全星QMS如何成为制造企业的质量战略引擎
  • linux 软硬链接详解
  • 《算法导论》第 25 章:所有结点对的最短路径问题
  • 计算机视觉CS231n学习(8)
  • 12 ABP Framework 租户管理
  • 介绍一下 自动驾驶 感知多任务训练模型设计
  • 面试题:如何用Flink实时计算QPS
  • 第4节 神经网络从公式简化到卷积神经网络(CNN)的进化之路
  • 第三章、GRU(门控循环网络,Gated Recurrent Unit)
  • redis中分布式锁的应用
  • 【js】让项目支持倾听和朗读AI技术
  • RTC时钟倒计时数码管同步显示实现(STC8)
  • AI模型选型:租快艇还是造航母?
  • 协作同步问题的深度分析与解决方案:结合表单汇总与AI技术提升运维效能