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

  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年最新高清壁纸,并存储在本地文件夹。
      • 代码示例
        -新建文件夹
        在这里插入图片描述
        -存储图片
        在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在CentOS中安装和卸载mysql

在CentOS7中安装和卸载mysql 卸载mysql1、查看是否安装过mysql2、查看mysql服务状态3、关闭mysql服务4、卸载mysql相关的rpm程序5、删除mysql相关的文件6、删除mysql的配置文件my.cnf 安装mysql1、下载mysql相关的rpm程序2、检查/tmp临时目录权限3、安装mysql前的依赖检查3、安…

HDOJ 1735:字数统计 ← 贪心

【题目来源】https://acm.hdu.edu.cn/showproblem.php?pid1735【题目描述】 一天,淘气的 Tom 不小心将水泼到了他哥哥 Jerry 刚完成的作文上。原本崭新的作文纸顿时变得皱巴巴的,更糟糕的是由于水的关系,许多字都看不清了。可怜的 Tom 知道他…

zookeeper的安装

zookeeper的安装 一.前言 zookeeper开源组件是为分布式应用,提供协调服务的一种解决方案。本文主要是介绍在Centos7的操作系统中,如何以单机,伪集群,集群的方式来安装部署zookeeper服务。zookeeper要求的jdk版本为1.6以上。本文假…

keil5搜索框还有左侧文件状态栏不见的问题

点击上面的window,弹出 reset view to default ,然后点击,再点击reset,就ok了

Python机器学习笔记(六、核支持向量机)

核支持向量机(kernelized support vector machine)简称SVM,支持向量机可以用于分类,也可以用于回归,分类在SVC中实现,回归在SVR中实现。 1. 线性模型与非线性特征 线性模型在低维空间中的应用非常受限&am…

线性表之单链表详解

一、概念 链表作为线性表的链式存储结构,将线性表L (a0,...ai-1,ai,ai1...an-1) 中的各元素分布在存储器的不同存储块,称为结点。结点之间通过指针建立联系 其中:data作为数据域,next作为指针域,指向ai的直…

启明智显ZX7981PC:5G时代的新选择,全屋网络无缝覆盖

在这个飞速发展的5G时代,每一个细微的科技进步都在推动着我们的生活向更加智能、便捷的方向发展。近日,启明智显再次引领科技潮流,正式发布其最新的5G CPE产品——ZX7981PC。作为继7981PG与7981PM之后的又一次迭代升级,ZX7981PC凭…

ubuntu检测是否已安装nvidia驱动以及产品类型

nvidia-sminvidia-smi 是 NVIDIA 提供的一个命令行工具,用于查看和管理 NVIDIA GPU 的状态。当你运行 nvidia-smi 命令时,它会显示当前系统中所有 NVIDIA GPU 的状态信息,包括 GPU 的使用率、温度、内存使用情况等。 有8个GPU nvcc -V查看c…

Introduction to NoSQL Systems

What is NoSQL NoSQL database are no-tabular非數據表格 database that store data differently than relational tables 其數據的存儲方式與關係型表格不同 Database that provide a mechanism機制 for data storage retrieval 檢索 that is modelled in means other than …

Javaweb web后端maven介绍作用安装

自动导入到这个项目 src是源代码 main主程序,核心代码 java是Java源代码 resources是项目配置文件 test测试相关的 maven概述 介绍 依赖在本地仓库查找,如果本地仓库有,用本地仓库的依赖,本地没有,连接中央仓库&…

MinIO分布式文件存储

一、分布式文件系统 问题引出 对于一个网站系统,若为降低成本投入,将文件存储服务和网站系统部署在同一台服务器中,访问量不大,基本不会有问题,但访问量逐渐升高,网站文件资源读取逐渐频繁,单…

SQL Server:只有MDF文件,如何附加数据库

第一步:先新建一个同名数据库,然后停止sql服务,删除新建数据库.ldf文件。 第二步:将要附加的数据库的.mdf文件覆盖刚新建的.mdf文件,并重启sql服务。 第三步:这时数据库DATA目录下只有一个.mdf文件&#xf…

《HTML 的变革之路:从过去到未来》

一、HTML 的发展历程 图片: HTML 从诞生至今,经历了多个版本的迭代。 (一)早期版本 HTML 3.2 在 1997 年 1 月 14 日成为 W3C 推荐标准,提供了表格、文字绕排和复杂数学元素显示等新特性,但因实现复杂且缺乏浏览器…

机器视觉与OpenCV--01篇

计算机眼中的图像 像素 像素是图像的基本单位,每个像素存储着图像的颜色、亮度或者其他特征,一张图片就是由若干个像素组成的。 RGB 在计算机中,RGB三种颜色被称为RGB三通道,且每个通道的取值都是0到255之间。 计算机中图像的…

网络安全创新实验

一、网络拓扑设计 二、网络主机概况 本实验一共包含4台虚拟机,分别为攻击机attacker,网关gateway,内网普通用户主机pc,内网服务器server,四台主机的详细信息如下表所示: 名称操作系统IP地址网络模式作用攻…

y3编辑器教学5:触发器2 案例演示

文章目录 一、探索1.1 ECA1.1.1 ECA的定义1.1.2 使用触发器实现瞬间移动效果 1.2 变量1.2.1 什么是变量1.2.2 使用变量存储碎片收集数量并展现 1.3 if语句(魔法效果挂接)1.3.1 地形设置1.3.2 编写能量灌注逻辑1.3.3 编写能量灌注后,实现传送逻…

016 在路由器上配置 DHCP

配置路由器端口IP地址 将路由器的端口地址配置好, 左边的网络地址是 192.168.1.0 右边的网络地址是 192.168.2.0 配置路由器的DHCP服务 打开命令窗口,进入特权模式 进入全局配置 conf t创建一个DHCP地址池; po1 是地址池的名称&#xf…

恋爱脑学Rust之并行之旅:Rayon介绍和使用

文章目录 一、开启爱情的依赖之旅(安装 Rayon)二、甜蜜瞬间的并行享受(基本数据并行操作)(一)共享美好时光(par_iter 方法)(二)分块珍藏回忆(par_…

【数据库系列】PostgreSQL 数据库连接

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

中介者模式的理解和实践

一、中介者模式概述 中介者模式(Mediator Pattern),也称为调解者模式或调停者模式,是一种行为设计模式。它的核心思想是通过引入一个中介者对象来封装一系列对象之间的交互,使得这些对象不必直接相互作用,从…