- os庫的作用
- 操作系統交互:os庫提供了一種使用Python與操作系統進行交互的方式。使用os庫來創建用于存儲爬取數據的文件夾,或者獲取當前工作目錄的路徑,以便將爬取的數據存儲在合適的位置。
- 環境變量操作:可以讀取和設置環境變量。在一些網絡爬蟲場景中,如果需要根據不同的環境(如開發環境和生產環境)來配置爬蟲的行為,比如設置代理服務器地址等環境變量,os庫就能發揮作用。
- 進程管理相關(部分功能):雖然不是os庫的主要用途,但它也可以用于一些簡單的進程相關操作,比如獲取進程ID等。這在同時運行多個爬蟲任務或者與其他程序協同工作時可能會用到。
- 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)
- 用途:在網絡爬蟲中,可以用于檢查存儲爬取數據的文件夾中的內容,或者獲取某個目錄下的所有網頁文件列表,以便后續進行處理。
- os.getcwd()
- 典型案例
-
創建數據存儲目錄并保存爬取數據
- 案例描述:假設你要編寫一個簡單的網絡爬蟲來爬取網頁內容,并將內容保存到本地文件中。首先,你需要創建一個合適的目錄來存儲數據,然后將爬取到的數據保存到該目錄下的文件中。
- 代碼示例:
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年最新高清壁紙,并存儲在本地文件夾。
- 代碼示例:
-新建文件夾
-存儲圖片
-