【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 osdir_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.pswp.cn/web/62785.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/62785.shtml
英文地址,請注明出處:http://en.pswp.cn/web/62785.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微信小程序從后端獲取的圖片,展示的時候上下沒有完全拼接,有縫隙【已解決】

文章目錄 1、index.wxml2、index.js3、detail.detail為什么 .rich-text-style 樣式可以生效&#xff1f;1. <rich-text> 組件的特殊性2. 類選擇器的作用范圍3. 樣式優先級4. line-height: 0 的作用5. 為什么直接使用 rich-text 選擇器無效&#xff1f; 總結 上下兩張圖片…

Linux-apache虛擬主機配置筆記

一、 安裝apache 有需要的話&#xff0c;可以去查看具體的apache的安裝apache安裝https://blog.csdn.net/m0_68472908/article/details/139348739?spm1001.2014.3001.5501 都可以使用本地yum源搭建本地yum源搭建https://blog.csdn.net/m0_68472908/article/details/14385692…

常用vim命令行-linux008

Vim 是一款功能強大的文本編輯器&#xff0c;廣泛應用于編程、配置文件編輯以及日常文本處理。Vim 在其命令行模式下提供了豐富的操作命令&#xff0c;這些命令能夠大幅提升編輯效率。以下是 Vim 中常用的命令及操作的總結&#xff0c;覆蓋了 Vim 中的基本操作、查找、替換、文…

xshell連接虛擬機,更換網絡模式:NAT->橋接模式

NAT模式&#xff1a;虛擬機通過宿主機的網絡訪問外網。優點在于不需要手動配置IP地址和子網掩碼&#xff0c;只要宿主機能夠訪問網絡&#xff0c;虛擬機也能夠訪問。對外部網絡而言&#xff0c;它看到的是宿主機的IP地址&#xff0c;而不是虛擬機的IP。但是&#xff0c;宿主機可…

【Spring Boot集成Shiro指南】

Spring Boot集成Shiro指南 一、添加Maven依賴 首先&#xff0c;需要在Spring Boot項目的pom.xml文件中添加Shiro相關的依賴。例如&#xff1a; <dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><ve…

SpringBoot使用Nacos進行application.yml配置管理

Nacos是阿里巴巴開源的一個微服務配置管理和服務發現的解決方案。它提供了動態服務發現、配置管理和 服務管理平臺。Nacos的核心功能包括服務發現、配置管理和動態服務管理&#xff0c;使得微服務架構下的服務治理 變得簡單高效。 Nacos的設計基于服務注冊與發現、配置管理、動…

Electron-Vite 項目搭建(Vue)

前提條件 Node.js: 確保已安裝 Node.js 版本 18 或更高版本 (推薦使用最新穩定版)。Vite: 確保 Vite 版本為 4.0 或以上。包管理工具: 推薦使用 pnpm&#xff0c;但也可以使用 npm 或 yarn。 安裝 Electron-Vite 首先&#xff0c;在項目中安裝 electron-vite 作為開發依賴&a…

STM32F103單片機HAL庫串口通信卡死問題解決方法

在上篇文章 STM32F103單片機使用STM32CubeMX創建IAR串口工程 中分享了使用cubeMX直接生成串口代碼的方法&#xff0c;在測試的過程中無意間發現&#xff0c;串口會出現卡死的問題。 當串口一次性發送十幾個數據的時候&#xff0c;串口感覺像卡死了一樣&#xff0c;不再接收數據…

【Neo4J】neo4j docker容器下的備份與恢復

文章目錄 一. 官網說明1. 操作說明2. 注意事項 二. docker 容器化操作1. 導出&#xff08;備份&#xff09;停止容器執行備份 2. 導入&#xff08;恢復&#xff09;停止容器(如果未停止)執行導入 3. 啟動容器 一. 官網說明 https://neo4j.com/docs/operations-manual/current/…

selenium自動爬蟲工具

一、介紹selenium爬蟲工具 selenium 是一個自動化測試工具&#xff0c;可以用來進行 web 自動化測試、爬蟲 selenium 本質是通過驅動瀏覽器&#xff0c;完全模擬瀏覽器的操作&#xff0c;比如跳轉、輸入、點擊、下拉等&#xff0c;來拿到網頁渲染之后的結果&#xff0c;可支持…

Unity開發數字孿生項目

前言&#xff1a;記錄下自己用Unity開發數字孿生項目&#xff0c;所用到的知識點、功能點以及對項目認知總結&#xff0c;當然還有開發過程中所遇到的坑。此篇博客也是會隨時進行更新。 &#x1f60a;屏幕前看到此片文章的開發者們在此類項目開發過程中少走些彎路&#xff0c;希…

node利用路由搭建web實例

npm init npm i express body-parser cookie-parser 封裝web實例 搭建路由 導出web 應用實例注冊

量化交易系統開發-實時行情自動化交易-8.25.真格(澎博財經旗下)平臺

19年創業做過一年的量化交易但沒有成功&#xff0c;作為交易系統的開發人員積累了一些經驗&#xff0c;最近想重新研究交易系統&#xff0c;一邊整理一邊寫出來一些思考供大家參考&#xff0c;也希望跟做量化的朋友有更多的交流和合作。 接下來會對于真格&#xff08;澎博財經…

QT JSON文件解析

參考博客 https://blog.csdn.net/cpp_learner/article/details/118421096 1 打開文件&#xff0c;讀取全部內容 QFile file("../Json/js.json"); if (!file.open(QFile::ReadOnly | QFile::Text)) {qDebug() << "cant open error!";return; }// 讀…

面試常見-Java 原生實現常見數據結構

Java 原生實現常見數據結構 文章目錄 Java 原生實現常見數據結構一、引言二、數組&#xff08;Array&#xff09;&#xff08;一&#xff09;概念&#xff08;二&#xff09;代碼實現 三、鏈表&#xff08;Linked List&#xff09;&#xff08;一&#xff09;概念&#xff08;二…

1. 機器學習基本知識(5)——練習題(參考答案)

20.&#x1f517;本章代碼筆記&#x1f4d3;鏈接&#xff08;需要&#x1fa9c;&#xff09;&#xff1a;&#xff08;01_the_machine_learning_landscape.ipynb - Colab (google.com)&#xff09; 如果你不想通過上面的官方網址下載本章的筆記&#xff0c;還可以在本篇博文的…

通常一個 Xml 映射文件,都會寫一個 Dao 接口與之對應, 請問,這個 Dao 接口的工作原理是什么?Dao 接口里的方法, 參數不同時,方法能重載嗎?

Dao 接口 即 Mapper 接口 。接口 的 全 限 名 &#xff0c;就是 映 射 文 件 中 的 namespace 的值 &#xff1b; 接口 的 方 法 名 &#xff0c; 就 是 映 射 文 件 中 Mapper 的 Statement 的 id 值&#xff1b; 接 口 方 法 內 的 參數 &#xff0c; 就 是 傳 遞 給 sql 的參…

硬件設計 | Altium Designer軟件PCB規則設置

基于Altium Designer&#xff08;24.9.1&#xff09;版本 嘉立創PCB工藝加工能力范圍說明-嘉立創PCB打樣專業工廠-線路板打樣 規則參考-嘉立創 注意事項 1.每次設置完規則參數都要點擊應用保存 2.每次創建PCB&#xff0c;都要設置好參數 3.可以設置默認規則&#xff0c;將…

WebDAV服務不能上傳大文件,文件超過50M報錯[0x800700DF]怎么辦?

這個問題需要分別從服務端和客戶端解決。 1.Windows客戶端 解除50M文件限制&#xff0c;Windows訪問Webdav服務時&#xff0c;大于50M文件提示錯誤[錯誤:0x800700DF] 部署了webdav&#xff0c;Windows10映射網絡磁盤&#xff0c;傳輸文件超過大約50MB的文件會彈出“0x800700…

安全基礎學習-keil調試匯編代碼

初始目的是為了通過匯編編寫CRC功能。 但是基礎為0&#xff0c;所以目前從搭建工程開始記錄。 大佬繞路。 &#xff08;一&#xff09;創建項目 1. 新建項目 打開 Keil uVision。選擇 Project -> New uVision Project 創建一個新項目。選擇你的目標設備&#xff08;如 AR…