【Python网络爬虫笔记】10- os库存储爬取数据

news2024/12/15 4:26:25
  1. os库的作用
    • 操作系统交互:os库提供了一种使用Python与操作系统进行交互的方式。使用os库来创建用于存储爬取数据的文件夹,或者获取当前工作目录的路径,以便将爬取的数据存储在合适的位置。
    • 环境变量操作:可以读取和设置环境变量。在一些网络爬虫场景中,如果需要根据不同的环境(如开发环境和生产环境)来配置爬虫的行为,比如设置代理服务器地址等环境变量,os库就能发挥作用。
    • 进程管理相关(部分功能):虽然不是os库的主要用途,但它也可以用于一些简单的进程相关操作,比如获取进程ID等。这在同时运行多个爬虫任务或者与其他程序协同工作时可能会用到。
  2. os库的常用方法
    • os.getcwd()
      • 功能:获取当前工作目录的路径。
      • 示例
        import os
        current_dir = os.getcwd()
        print(current_dir)
        
      • 用途:在网络爬虫中,当你要确定数据存储位置或者加载配置文件时,需要知道当前的工作路径。例如,你可以将爬取到的数据存储在当前工作目录下的一个特定文件夹中。
    • os.mkdir()和os.makedirs()
      • 功能:os.mkdir()用于创建单个新目录;os.makedirs()可以递归地创建目录,即可以创建多层嵌套的目录。
      • 示例
        # 创建单个目录
        import os
        new_dir = "data"
        os.mkdir(new_dir)
        # 创建多层目录
        nested_dir = "data/subdata"
        os.makedirs(nested_dir)
        
      • 用途:在网络爬虫中,用于创建存储爬取数据的文件夹。比如,你可以根据日期或者网站名称来创建不同的文件夹,将爬取的数据分类存储。
    • os.path.join()
      • 功能:将多个路径组合成一个完整的路径。
      • 示例
        import os
        base_dir = "data"
        file_name = "result.txt"
        full_path = os.path.join(base_dir, file_name)
        print(full_path)
        
      • 用途:在网络爬虫中,用于构建存储文件的完整路径。这样可以确保在不同操作系统下(因为不同操作系统的路径分隔符不同,如Windows是’\‘,Linux是’/')路径的正确性。
    • os.listdir()
      • 功能:返回指定目录下的所有文件和目录的名称列表。
      • 示例
        import os
        dir_path = "."
        file_list = os.listdir(dir_path)
        print(file_list)
        
      • 用途:在网络爬虫中,可以用于检查存储爬取数据的文件夹中的内容,或者获取某个目录下的所有网页文件列表,以便后续进行处理。
  3. 典型案例
    • 创建数据存储目录并保存爬取数据

      • 案例描述:假设你要编写一个简单的网络爬虫来爬取网页内容,并将内容保存到本地文件中。首先,你需要创建一个合适的目录来存储数据,然后将爬取到的数据保存到该目录下的文件中。
      • 代码示例
        import os
        import requests
        
        # 创建存储数据的目录
        data_dir = "web_data"
        try:
            os.makedirs(data_dir)
        except FileExistsError:
            print("目录已存在")
        
        # 爬取网页内容并保存
        url = "https://www.example.com"
        response = requests.get(url)
        file_path = os.path.join(data_dir, "example.html")
        with open(file_path, "w", encoding="utf - 8") as f:
            f.write(response.text)
        
      • 解释
        • 首先使用os.makedirs()尝试创建一个名为“web_data”的目录来存储爬取的数据。如果目录已经存在,会捕获FileExistsError异常并打印提示信息。
        • 然后使用requests库(这里假设已经安装)爬取指定网页(这里是“https://www.example.com”)的内容。
        • 通过os.path.join()构建保存文件的完整路径,将爬取的内容保存到“web_data”目录下的“example.html”文件中。
    • 遍历目录下的所有网页文件进行处理

      • 案例描述:假设你已经有一个存储了多个网页文件的目录,你想要遍历这个目录下的所有网页文件,读取文件内容并进行一些文本处理,比如提取其中的链接。
      • 代码示例
        import os
        
        dir_path = "web_pages"
        for file_name in os.listdir(dir_path):
            file_path = os.path.join(dir_path, file_name)
            if os.path.isfile(file_path):
                with open(file_path, "r", encoding="utf - 8") as f:
                    content = f.read()
                    # 在这里可以添加对内容提取链接等文本处理的代码
                    print("正在处理文件:", file_path)
        
      • 解释
        • 首先指定要遍历的目录“web_pages”。
        • 使用os.listdir()获取目录下所有文件和目录的名称列表,然后通过循环遍历这些名称。
        • 对于每个名称,使用os.path.join()构建完整的文件路径,并通过os.path.isfile()判断是否为文件(而不是目录)。
        • 如果是文件,就打开文件读取内容,在这里可以添加具体的文本处理代码,如使用正则表达式提取链接等,同时打印出正在处理的文件路径。
    • 案例9:【Python网络爬虫笔记】9- 抓取优美图库2024年最新高清壁纸

    • 链接:【Python网络爬虫笔记】9- 抓取优美图库2024年最新高清壁纸

      • 案例描述:抓取优美图库2024年最新高清壁纸,并存储在本地文件夹。
      • 代码示例
        -新建文件夹
        在这里插入图片描述
        -存储图片
        在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2259721.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TCP 为什么是 3 次握手 4 次挥手?

前言: TCP 的 3 次握手 4 次挥手是一个非常经典的问题,相信各位从事 Java 的朋友在职业生涯中没少被问到这个问题,本篇我们就展开分析一下 TCP 为什么是 3 次握手 4 次挥手。 TCP 协议 要搞清楚 TCP 为什么是 3 次握手 4 次挥手我们需要先…

智能客户服务:科技赋能下的新体验

在当今这个数字化时代,客户服务已经不仅仅是简单的售后服务,它已竞争的关键要素之一。随着人工智能、大数据、云计算等技术的飞速发展,智能客户服务正逐步改变着传统的服务模式,为企业和消费者带来了前所未有的新体验。 一、智能客…

C++ 内存管理和模板与STL

此篇目是之后各种C库的基础 目录 内存管理 内存分布 内存管理方式 new和delete operator new 与 operator delete函数 实现原理 定位new表达式(placement-new) 模板基础 泛型编程 模板 函数模板 类模板 STL 组成部分 内存管理 内存分布 int globalVar 1; //全局变量 静…

深入理解 CSS 文本换行: overflow-wrap 和 word-break

前言 正常情况下,在固定宽度的盒子中的中文会自动换行。但是,当遇到非常长的英文单词或者很长的 URL 时,文本可能就不会自动换行,而会溢出所在容器。幸运的是,CSS 为我们提供了一些和文本换行相关的属性;今…

Polars数据聚合与旋转实战教程

在这篇博文中,我们的目标是解决数据爱好者提出的一个常见问题:如何有效地从Polars DataFrame中创建汇总视图,以便在不同时间段或类别之间轻松进行比较。我们将使用一个实际的数据集示例来探索实现这一目标的各种方法。 Polars简介 Polars 是…

STM32CUBEMX+STM32F4+IAP串口升级应用,亲测可用,带详解

一、IAP的基本概念 IAP,全名为in applacation programming,即在应用编程。 也就是在应用程序中升级。好处就太多了,比如远程在线升级,不用人到现场拆开,用烧写器连接升级。 实现IAP技术的核心是一段预先烧写在单片机内部的IAP程序。这段程…

CTFHub 命令注入-综合练习(学习记录)

综合过滤练习 命令分隔符的绕过姿势 ; %0a %0d & 那我们使用%0a试试,发现ls命令被成功执行 /?ip127.0.0.1%0als 发现一个名为flag_is_here的文件夹和index.php的文件,那么我们还是使用cd命令进入到文件夹下 http://challenge-438c1c1fb670566b.sa…

深入探索 JVM:原理、机制与实战

一、JVM 概述 JVM(Java Virtual Machine)是 Java 程序运行的核心组件,它提供了一个独立于硬件和操作系统的执行环境,使得 Java 程序能够在不同平台上具有跨平台的特性。 JVM 主要由以下几部分组成: 类装载器&#xf…

视频推拉流EasyDSS无人机直播技术巡查焚烧、烟火情况

焚烧作为一种常见的废弃物处理方式,往往会对环境造成严重污染。因此,减少焚烧、推广绿色能源和循环经济成为重要措施。通过加强森林防灭火队伍能力建设与长效机制建立,各地努力减少因焚烧引发的森林火灾,保护生态环境。 巡察烟火…

挺详细的记录electron【V 33.2.0】打包vue3项目为可执行程序

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、直接看效果 二、具体步骤 1.安装配置electron 1.将 electron 包安装到应用的开发依赖中。 2.安装electron-packager依赖(打包可执行文件&#…

基本分页存储管理

一、实验目的 目的:熟悉并掌握基本分页存储管理的思想及其实现方法,熟悉并掌握基本分页存储管理的分配和回收方式。 任务:模拟实现基本分页存储管理方式下内存空间的分配和回收。 二、实验内容 1、实验内容 内存空间的初始化——可以由用户输…

Vue Web开发(五)

1. axios axios官方文档 异步库axios和mockjs模拟后端数据,axios是一个基于promise的HTTP库,使用npm i axios。在main.js中引入,需要绑定在Vue的prototype属性上,并重命名。   (1)main.js文件引用 imp…

论文概览 |《IJAEOG》2024.08 Vol.132(下)

本次给大家整理的是《International Journal of Applied Earth Observation and Geoinformation》杂志2024年08月第132期的论文的题目和摘要,一共包括88篇SCI论文!由于论文过多,我们将通过两篇文章进行介绍,本篇文章介绍第45--第8…

「数据结构详解·十五」树状数组

「数据结构详解一」树的初步「数据结构详解二」二叉树的初步「数据结构详解三」栈「数据结构详解四」队列「数据结构详解五」链表「数据结构详解六」哈希表「数据结构详解七」并查集的初步「数据结构详解八」带权并查集 & 扩展域并查集「数据结构详解九」图的初步「数据结构…

【sgFileLink】自定义组件:基于el-link、el-icon标签构建文件超链接组件,支持垃圾桶删除、点击预览视频/音频/图片/PDF格式文件

sgFileLink源代码 <template><div :class"$options.name"><el-link click.stop"clickFile(data)"><img :src"getSrc(data)" /><span>{{ getFileNameAndSize(data) }}</span></el-link><el-linkcl…

电机驱动模块L9110S详解

电机驱动模块是一种用于控制和驱动电机的设备&#xff0c;它能够将控制信号转化为适合电机操作的电流和电压。通过电机驱动模块&#xff0c;可以实现对电机的速度、方向等参数进行精确控制。 今天我们要介绍的 L9110S 电机驱动适合大学生、工程师、个人DIY、电子爱好者们学习和…

Unity 获取鼠标点击位置物体贴图颜色

实现 Ray ray Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out RaycastHit hit)) {textureCoord hit.textureCoord;textureCoord.x * textureMat.width;textureCoord.y * textureMat.height;textureColor textureMat.GetPixel(Mathf.Flo…

openlayers+vite+vue3实现在地图上画线(四)

在前几期实现离线地图初始化以及规划某一特定区域、打点、出现弹窗的基础上&#xff0c;本文主要阐述如何实现在所规划的区域地图上画线&#xff0c;如果你实现了打点的效果&#xff0c;其实这个相对来说还是算比较简单的&#xff0c;因为和打点的代码大差不差。使用openlayers…

游戏引擎学习第45天

仓库: https://gitee.com/mrxiao_com/2d_game 回顾 我们刚刚开始研究运动方程&#xff0c;展示了如何处理当人物遇到障碍物时的情况。有一种版本是角色会从障碍物上反弹&#xff0c;而另一版本是角色会完全停下来。这种方式感觉不太自然&#xff0c;因为在游戏中&#xff0c;…

类与对象以及ES6的继承

认识class定义类 类的声明用的比较多 类与构造函数的异同 类的构造函数 类的实例方法 类的访问器方法 在类里面写拦截方法 类的静态方法 通过类名直接访问 es6类的继承-extends super关键字 子类可以重写父类方法包括父类的静态方法也可以继承父类的静态方法 babel可以将新的代…