最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)按擴(kuò)展名分類文件夾的自動化工具

 更新時間:2025年12月11日 09:29:55   作者:bsdr  
folder-sorter是一款基于Python開發(fā)的自動化文件管理工具,能夠根據(jù)文件的擴(kuò)展名將指定文件夾中的文件分類歸檔,下面小編就和大家詳細(xì)介紹一下如何從零構(gòu)建一個智能文件夾整理工具吧

簡介:folder-sorter是一款基于Python開發(fā)的自動化文件管理工具,能夠根據(jù)文件的擴(kuò)展名將指定文件夾中的文件分類歸檔。程序遍歷目標(biāo)目錄,識別各類常見文件類型(如圖片、文檔等),并自動創(chuàng)建對應(yīng)的子文件夾進(jìn)行歸類,提升文件組織效率。同時,程序還會創(chuàng)建一個“文件夾”文件夾用于存放未知或無法識別類型的文件,確保整理過程安全有序。適用于程序員、設(shè)計師等需要高效管理大量文件的用戶,幫助實現(xiàn)清晰、規(guī)范的數(shù)字化文件結(jié)構(gòu)。

前言

你有沒有過這樣的經(jīng)歷?打開“下載”文件夾,瞬間被幾百個雜亂無章的文件淹沒——PDF、JPG、ZIP、MP4、TMP……各種擴(kuò)展名混在一起,連自己都記不清哪個是上周的工作報告,哪個是昨天追劇緩存的視頻。

這已經(jīng)不是個例了。在數(shù)字內(nèi)容爆炸式增長的今天,我們每天都在生成和接收大量文件,但 文件管理卻始終停留在“手動拖拽”的原始階段 。直到有一天,我決定寫一個腳本:只要運(yùn)行一下,所有文件自動歸類到“文檔”、“圖片”、“代碼”、“壓縮包”等文件夾中——于是,“folder-sorter”誕生了。

這不是什么高精尖的人工智能項目,但它足夠?qū)嵱茫沧銐蚵斆?。它能識別 .tar.gz 這種復(fù)合后綴,避開 .DS_Store ~$臨時文件 ,還能把散落的子目錄統(tǒng)一收納進(jìn)“文件夾”容器里。更關(guān)鍵的是,它不會因為某個權(quán)限錯誤就崩潰退出,而是記錄日志、跳過問題項,繼續(xù)完成剩下的任務(wù)。

接下來,我想帶你一步步走進(jìn)這個小工具的內(nèi)核,看看它是如何用 Python 實現(xiàn)一套完整、健壯、可擴(kuò)展的自動化文件管理系統(tǒng)。準(zhǔn)備好了嗎?

它是怎么“看懂”文件類型的

一切的起點,都是那個小小的點—— .pdf 、 .py 、 .mp3 。操作系統(tǒng)靠它來判斷該用什么程序打開文件;而我們的腳本,則要靠它來做分類決策。

但別小看這個看似簡單的任務(wù)?,F(xiàn)實中,文件命名千奇百怪:

  • report.pdf 
  • archive.tar.gz (這是 .gz 還是 .tar.gz ?)
  • image.jpg.bak (備份文件該歸哪一類?)
  • .bashrc (隱藏文件要不要處理?)
  • Invoice.PDF (大小寫敏感嗎?)

如果只用 filename.split('.')[-1] 來提取后綴,那 archive.tar.gz 就會被誤判為 .gz 類型,導(dǎo)致它被錯誤地放進(jìn)“GZ壓縮”而不是“壓縮包”組。這顯然不行。

所以,真正的解決方案必須更聰明一點。

先查詞典,再拆分 

我們可以維護(hù)一份“常見復(fù)合擴(kuò)展名”列表,優(yōu)先匹配這些長后綴模式:

COMPOUND_EXTS = ['.tar.gz', '.tar.bz2', '.tar.xz', '.zip.enc', '.7z.enc']

然后寫一個函數(shù),先遍歷這份清單,看看文件名是否以其中某一項結(jié)尾:

def get_true_extension(filename):
    # 優(yōu)先匹配復(fù)合擴(kuò)展名
    for ext in COMPOUND_EXTS:
        if filename.endswith(ext):
            return ext.lower()

    # 回退到標(biāo)準(zhǔn)分割邏輯
    _, ext = os.path.splitext(filename)
    return ext.lower() if ext else None

這樣, backup.tar.gz 能正確識別為 .tar.gz ,而 data.json 則正常返回 .json 。兩全其美!

當(dāng)然,你也可以用正則表達(dá)式實現(xiàn)類似功能:

import re

EXT_PATTERN = re.compile(r'\.(tar\.gz|tar\.bz2|tar\.xz|[a-zA-Z0-9]{1,8})$', re.IGNORECASE)

def extract_ext_regex(name):
    match = EXT_PATTERN.search(name)
    return match.group(0).lower() if match else None

不過我個人更喜歡第一種方式——清晰、易讀、便于維護(hù)。畢竟,我們不是在寫競賽題,而是在造一個真正能用的工具。

經(jīng)驗之談 :不要一開始就追求“最優(yōu)雅”的解法。先做一個能跑通的版本,再逐步優(yōu)化。很多復(fù)雜的邊界情況,只有在真實數(shù)據(jù)面前才會暴露出來。

大小寫問題?統(tǒng)一轉(zhuǎn)小寫!

Linux 區(qū)分大小寫,Windows 不區(qū)分。這意味著 FILE.PDF file.pdf 在某些系統(tǒng)上是兩個不同的文件,在另一些系統(tǒng)上卻是同一個。

為了避免混亂,我們在內(nèi)部處理時一律將擴(kuò)展名轉(zhuǎn)為小寫:

ext = get_true_extension(filename).lower()

這樣一來,無論用戶怎么命名,我們都用統(tǒng)一的標(biāo)準(zhǔn)去查找分類規(guī)則,徹底杜絕因大小寫導(dǎo)致的漏匹配。

隱藏文件怎么辦?選擇性忽略

.git 、 .DS_Store .idea 這類隱藏目錄或配置文件,通常不應(yīng)該被移動或修改。它們屬于特定應(yīng)用的元數(shù)據(jù),亂動可能會導(dǎo)致項目損壞。

因此,在遍歷目錄時,我們可以直接跳過名稱以 . 開頭的條目:

if entry.startswith('.'):
    continue  # 忽略隱藏項

當(dāng)然,如果你希望把這些隱藏配置也歸類管理(比如專門建個“配置文件”夾),那就另當(dāng)別論了。關(guān)鍵是—— 讓用戶有選擇權(quán) 。

分類策略:白名單 vs 黑名單 

一旦拿到了擴(kuò)展名,下一步就是決定:“這個 .py 文件,到底該放到‘代碼’還是‘腳本’文件夾?”

這就涉及到分類策略的設(shè)計了。常見的有兩種思路:

白名單模式:只動我知道的

只處理明確列出的擴(kuò)展名,其他一概不動。

WHITELIST_MAP = {
    '.py': '代碼',
    '.js': '代碼',
    '.html': '網(wǎng)頁',
    '.css': '網(wǎng)頁',
    '.jpg': '圖片',
    '.png': '圖片',
    '.pdf': '文檔',
    '.docx': '文檔',
}

優(yōu)點很明顯:安全!哪怕目錄里混進(jìn)了病毒文件 malware.exe ,只要沒在白名單里,就不會被移動,也就不會觸發(fā)執(zhí)行風(fēng)險。

適合場景:企業(yè)環(huán)境、重要資料整理、生產(chǎn)服務(wù)器。

缺點也很明顯:不夠“全面”。如果你剛接觸 Markdown,可能忘了加 .md 到白名單,結(jié)果發(fā)現(xiàn)所有的筆記都沒被歸類。

黑名單模式:除了黑名單都動

相反,黑名單模式假設(shè)“所有文件都應(yīng)該被整理”,除非它是明確需要排除的。

BLACKLIST = {'.tmp', '.temp', '.log', '.DS_Store', '~$'}

只要擴(kuò)展名不在黑名單里,就參與分類。

優(yōu)點:覆蓋率高,適合快速清理雜亂目錄。

缺點:風(fēng)險更高。萬一有個惡意腳本偽裝成 .txt ,它就會被正常移動,甚至可能被后續(xù)流程觸發(fā)。

你會選哪種?

我的建議是:默認(rèn)使用白名單,但允許用戶通過參數(shù)切換模式。例如:

python folder_sorter.py --mode=whitelist --config=config.json
python folder_sorter.py --mode=blacklist --exclude=.tmp,.log

讓專業(yè)用戶擁有控制權(quán),也讓新手免于誤操作。

映射表可以熱更新嗎?當(dāng)然!

硬編碼映射關(guān)系雖然簡單,但不靈活。更好的做法是把分類規(guī)則寫進(jìn)外部配置文件,比如 JSON 或 YAML:

// config/mapping.json
{
  "documents": [".pdf", ".docx", ".txt", ".md"],
  "images": [".jpg", ".jpeg", ".png", ".gif", ".svg"],
  "code": [".py", ".js", ".html", ".css", ".ts"],
  "archives": [".zip", ".rar", ".tar.gz", ".7z"]
}

然后在程序啟動時加載:

import json

def load_mapping(config_path="config/mapping.json"):
    try:
        with open(config_path, 'r', encoding='utf-8') as f:
            raw = json.load(f)
        # 展平結(jié)構(gòu):{'.pdf': 'documents', ...}
        mapping = {}
        for category, extensions in raw.items():
            for ext in extensions:
                mapping[ext.lower()] = category
        return mapping
    except Exception as e:
        print(f"?? 加載配置失敗: {e},使用默認(rèn)規(guī)則")
        return DEFAULT_MAPPING  # 提供兜底方案

這樣一來,不同用戶可以根據(jù)習(xí)慣自定義分類邏輯,團(tuán)隊之間也能共享模板,極大提升了可用性。

移動文件前,這些細(xì)節(jié)不能忽略

識別完了類型,也知道該放哪兒了——是不是直接 shutil.move(src, dst) 就完事了?

Too young too simple 

實際操作中,有太多邊界情況會讓你措手不及:

  • 目標(biāo)文件夾已經(jīng)存在怎么辦?
  • 同名文件正在被占用怎么辦?
  • 沒權(quán)限訪問某個路徑怎么辦?
  • 磁盤滿了怎么辦?

這些問題,才是真正考驗一個腳本是否“靠譜”的地方。

如何安全創(chuàng)建目標(biāo)目錄

我們當(dāng)然可以用 os.makedirs(path) 創(chuàng)建文件夾,但要注意重復(fù)創(chuàng)建會拋錯。

Python 提供了一個超實用的參數(shù): exist_ok=True

def ensure_dir(path):
    try:
        os.makedirs(path, exist_ok=True)
        print(f"?? 已確保目錄存在: {path}")
    except PermissionError:
        print(f"? 無權(quán)創(chuàng)建目錄: {path}")
        return False
    except Exception as e:
        print(f"?? 創(chuàng)建目錄失敗: {e}")
        return False
    return True

有了 exist_ok=True ,就算目錄已存在也不會報錯,完美解決并發(fā)或重復(fù)調(diào)用的問題。

文件沖突了咋辦?自動編號避讓

最怕的就是這種情況:

你要把 report.pdf 移動到“文檔”文件夾,但那里 already 有個同名文件。

直接覆蓋?太危險!萬一那是領(lǐng)導(dǎo)剛簽好的合同呢?

我的做法是: 自動重命名 ,生成 report_1.pdf 、 report_2.pdf ……

def get_available_path(dst_folder, filename):
    name, ext = os.path.splitext(filename)
    counter = 1
    new_path = os.path.join(dst_folder, filename)

    while os.path.exists(new_path):
        new_name = f"{name}_{counter}{ext}"
        new_path = os.path.join(dst_folder, new_name)
        counter += 1

    return new_path

這樣既避免了數(shù)據(jù)丟失,又保證了每一步操作都能繼續(xù)下去。

當(dāng)然,也可以提供策略選項:

  • skip :跳過
  • overwrite :強(qiáng)制覆蓋
  • rename :自動編號(默認(rèn))

讓用戶根據(jù)需求選擇。

跨設(shè)備移動 vs 同一分區(qū)移動

你知道嗎? shutil.move() 的行為其實取決于源和目標(biāo)是否在同一文件系統(tǒng)上:

  • 同一分區(qū) :執(zhí)行原子性重命名(極快)
  • 不同分區(qū) :先復(fù)制 + 刪除源文件(慢,且中間可能出錯)

如果你在處理大文件(比如幾十GB的視頻),這種差異會非常明顯。

為了提升性能,可以提前判斷:

def is_same_filesystem(src, dst):
    try:
        return os.stat(src).st_dev == os.stat(dst).st_dev
    except OSError:
        return False  # 出錯也算不同

如果是同一設(shè)備,甚至可以用 os.replace() 替代,速度更快、更安全。

主程序怎么設(shè)計才夠健壯

一個好的主函數(shù),不只是“調(diào)用幾個方法”,而是整個系統(tǒng)的指揮中心。

它應(yīng)該負(fù)責(zé):

  • 參數(shù)解析
  • 路徑校驗
  • 異常兜底
  • 日志輸出
  • 退出碼控制

讓我們來寫一個工業(yè)級的入口函數(shù):

import sys
import argparse
import logging

def main():
    parser = argparse.ArgumentParser(description="智能文件分類器")
    parser.add_argument("path", nargs="?", help="目標(biāo)目錄路徑")
    parser.add_argument("--dry-run", action="store_true", help="模擬運(yùn)行")
    parser.add_argument("--verbose", "-v", action="count", default=0, help="詳細(xì)程度")
    parser.add_argument("--config", default="config/mapping.json")

    args = parser.parse_args()

    # 設(shè)置日志級別
    log_level = logging.WARNING
    if args.verbose >= 2:
        log_level = logging.DEBUG
    elif args.verbose == 1:
        log_level = logging.INFO

    logging.basicConfig(
        level=log_level,
        format="%(asctime)s [%(levelname)s] %(message)s",
        handlers=[
            logging.FileHandler("sorter.log", encoding="utf-8"),
            logging.StreamHandler(sys.stdout)
        ]
    )

    # 確定目標(biāo)路徑
    target_dir = args.path or os.getcwd()
    if not os.path.exists(target_dir):
        logging.critical(f"路徑不存在: {target_dir}")
        sys.exit(1)
    if not os.path.isdir(target_dir):
        logging.critical(f"不是一個目錄: {target_dir}")
        sys.exit(1)

    try:
        perform_sorting(target_dir, args.dry_run, args.config)
        logging.info("? 文件整理完成!")
        sys.exit(0)
    except KeyboardInterrupt:
        logging.warning("用戶中斷操作")
        sys.exit(1)
    except Exception as e:
        logging.critical(f"未預(yù)期錯誤: {e}", exc_info=True)
        sys.exit(1)

看看這段代碼帶來了哪些提升:

  • 支持命令行幫助 --help
  • 可指定路徑或使用當(dāng)前目錄
  • 模擬運(yùn)行模式,防止誤操作
  • 多級日志輸出(INFO/DEBUG)
  • 錯誤寫入日志文件,方便排查
  • 正確設(shè)置退出碼,支持定時任務(wù)監(jiān)控

這才是一個“能放進(jìn)生產(chǎn)環(huán)境”的腳本該有的樣子。

把“文件夾”本身也管起來

很多人忽略了這一點:原始目錄里的 子目錄 怎么辦?

比如你有一個 Photos 文件夾、一個 Work 文件夾、一個 Temp 文件夾……它們也應(yīng)該被整理!

我的做法是:創(chuàng)建一個叫“文件夾”的特殊容器,把所有非隱藏的子目錄都移進(jìn)去。

def move_subdirectories(root):
    container = os.path.join(root, "?? 文件夾")  # 加個圖標(biāo)更醒目
    os.makedirs(container, exist_ok=True)

    entries = os.listdir(root)
    for name in entries:
        path = os.path.join(root, name)
        if not os.path.isdir(path) or name.startswith('.'):
            continue
        if name == "?? 文件夾":  # 避免把自己也移進(jìn)去
            continue

        dest = os.path.join(container, name)
        counter = 1
        original_dest = dest
        while os.path.exists(dest):
            dest = f"{original_dest}_{counter}"
            counter += 1

        try:
            shutil.move(path, dest)
            logging.info(f"?? 移動目錄: {name} → 文件夾/")
        except Exception as e:
            logging.error(f"? 無法移動目錄 {name}: {e}")

你會發(fā)現(xiàn)一個小細(xì)節(jié):我也對同名目錄做了重命名處理。因為很可能已經(jīng)有另一個 Work 存在于“文件夾”中了。

設(shè)計理念 :不僅要整理文件,更要整理“結(jié)構(gòu)”。讓整個目錄樹變得清晰、有序、一眼就能看明白。

性能優(yōu)化:別讓I/O拖慢腳步

當(dāng)你面對上千個文件時,每一次 os.path.join() 、每一個 os.makedirs() 都可能是性能瓶頸。

這里有幾點優(yōu)化建議:

緩存已創(chuàng)建的目錄路徑

不要每次都要檢查并創(chuàng)建一次。我們可以用集合(set)記錄已經(jīng)創(chuàng)建過的路徑:

_created_dirs = set()

def smart_mkdir(path):
    if path not in _created_dirs:
        os.makedirs(path, exist_ok=True)
        _created_dirs.add(path)

減少不必要的系統(tǒng)調(diào)用,效率直線上升。

批量預(yù)計算目標(biāo)路徑

與其邊讀邊處理,不如先把所有文件掃描一遍,算好每個的目標(biāo)路徑,再統(tǒng)一執(zhí)行移動。

tasks = []
for name in entries:
    src = os.path.join(root, name)
    if not os.path.isfile(src):
        continue
    ext = get_true_extension(name)
    folder_name = MAPPING.get(ext, "其他")
    dst_folder = os.path.join(root, folder_name)
    dst_path = get_available_path(dst_folder, name)
    tasks.append((src, dst_path))

這樣可以在內(nèi)存中完成大部分邏輯,最后集中處理 I/O,降低磁盤壓力。

真實部署:讓它成為你的日常助手

開發(fā)完了,怎么用才爽?

加入 PATH,全局調(diào)用

在 Linux/macOS 上:

# 添加執(zhí)行權(quán)限
chmod +x folder_sorter.py

# 創(chuàng)建軟鏈接
sudo ln -s $(pwd)/folder_sorter.py /usr/local/bin/folder-sort

# 現(xiàn)在 anywhere 都能用
folder-sort ~/Downloads --verbose

結(jié)合 cron 定時自動整理

每天早上9點自動整理下載目錄:

# 編輯定時任務(wù)
crontab -e

# 添加這一行
0 9 * * * /usr/bin/python3 /path/to/folder_sorter.py --path $HOME/Downloads >> /var/log/folder-sort.log 2>&1

再也不用手動整理了,醒來就是干凈清爽的新一天

模擬運(yùn)行模式:先預(yù)演再動手

加上 --dry-run 參數(shù),可以看到“如果運(yùn)行,會發(fā)生什么”:

python folder_sorter.py --dry-run --path ~/Downloads
# [INFO] 模擬移動: report.pdf → 文檔/report.pdf
# [INFO] 模擬移動: photo.jpg → 圖片/photo.jpg

確認(rèn)無誤后再去掉參數(shù)正式執(zhí)行,安全感拉滿。

未來還能怎么升級

這個工具現(xiàn)在只是個起點。隨著需求變化,它可以不斷進(jìn)化:

  • 1.GUI 圖形界面:用 Tkinter 或 PyQt 做個窗口,拖拽文件夾就能整理,適合不熟悉命令行的家人朋友。
  • 2.云同步前預(yù)處理 :集成 Dropbox/OneDrive API,在上傳前自動整理本地文件,保持云端結(jié)構(gòu)整潔。
  • 3.內(nèi)容指紋去重 :不僅按名字分類,還能通過哈希值檢測重復(fù)文件,幫你清理冗余數(shù)據(jù)。
  • 4.MIME 類型 fallback :有些文件沒有擴(kuò)展名(比如從手機(jī)傳過來的照片),可以通過 python-magic 讀取 MIME 類型進(jìn)行推測。
  • 5.自學(xué)習(xí)分類模型 :收集用戶操作習(xí)慣,訓(xùn)練一個小型推薦系統(tǒng):“你上次把 .ipynb 放進(jìn)了‘代碼’,這次還這么分嗎?”

最后的話:工具的意義是什么

寫這樣一個腳本,花不了太多時間。但它帶來的價值,遠(yuǎn)遠(yuǎn)超過那一兩百行代碼。

它教會我們:

  • 自動化不是炫技,而是解放雙手
  • 細(xì)節(jié)決定成敗,邊界情況才是真考驗
  • 好的工具,應(yīng)該是可靠的、透明的、可預(yù)測的

更重要的是,它讓我們意識到: 我們可以掌控技術(shù),而不是被技術(shù)淹沒 。

下次當(dāng)你面對一團(tuán)亂麻的文件夾時,別再手動拖拽了。停下來,想想能不能寫個腳本解決。哪怕只是一個小小的開始,也是向“數(shù)字自由”邁出的一大步。

畢竟,我們是程序員啊。

“Don’t repeat yourself. Automate it.”—— Every seasoned developer ever 

項目源碼建議結(jié)構(gòu)

folder-sorter/
├── folder_sorter.py         # 主程序
├── config/
│   └── mapping.json         # 分類規(guī)則
├── logs/
│   └── sorter.log           # 日志文件
├── tests/                   # 單元測試
└── README.md                # 使用說明

以上就是Python實現(xiàn)按擴(kuò)展名分類文件夾的自動化工具的詳細(xì)內(nèi)容,更多關(guān)于Python文件夾分類的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python中JSON的使用方法(超詳細(xì))

    Python中JSON的使用方法(超詳細(xì))

    JSON是一種輕量級的數(shù)據(jù)交換格式,它是JavaScript的子集,易于人閱讀和編寫,這篇文章主要介紹了Python中JSON的基本使用,需要的朋友可以參考下
    2022-11-11
  • Opencv圖像處理:如何判斷圖片里某個顏色值占的比例

    Opencv圖像處理:如何判斷圖片里某個顏色值占的比例

    這篇文章主要介紹了Opencv圖像處理:如何判斷圖片里某個顏色值占的比例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 如何解決import torchvision報錯問題 DLL:找不到模塊

    如何解決import torchvision報錯問題 DLL:找不到模塊

    這篇文章主要介紹了如何解決import torchvision報錯問題 DLL:找不到模塊,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • python編程實現(xiàn)12306的一個小爬蟲實例

    python編程實現(xiàn)12306的一個小爬蟲實例

    這篇文章主要介紹了python編程實現(xiàn)12306的一個小爬蟲實例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Python獲取字典中的值的八種方法

    Python獲取字典中的值的八種方法

    Python 字典(dictionary)是一種可變?nèi)萜髂P?可以存儲任意數(shù)量的任意類型的數(shù)據(jù),字典通常用于存儲鍵值對,每個元素由一個鍵(key)和一個值(value)組成,鍵和值之間用冒號分隔,本文給大家介紹了Python 字典取值的幾種方法及其代碼演示,需要的朋友可以參考下
    2024-07-07
  • Python代碼一鍵轉(zhuǎn)Jar包及Java調(diào)用Python新姿勢

    Python代碼一鍵轉(zhuǎn)Jar包及Java調(diào)用Python新姿勢

    這篇文章主要介紹了Python一鍵轉(zhuǎn)Jar包,Java調(diào)用Python新姿勢,本文通過截圖實例給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • 簡單了解Python讀取大文件代碼實例

    簡單了解Python讀取大文件代碼實例

    這篇文章主要介紹了簡單了解Python讀取大文件代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • Python爬蟲獲取JavaScript動態(tài)渲染后的網(wǎng)頁內(nèi)容四種方法

    Python爬蟲獲取JavaScript動態(tài)渲染后的網(wǎng)頁內(nèi)容四種方法

    在爬取動態(tài)網(wǎng)頁數(shù)據(jù)時我們需要模擬客戶端瀏覽器環(huán)境,讓JavaScript能夠正常地執(zhí)行,并獲取渲染后的頁面數(shù)據(jù),這篇文章主要介紹了Python爬蟲獲取JavaScript動態(tài)渲染后的網(wǎng)頁內(nèi)容四種方法,需要的朋友可以參考下
    2025-06-06
  • python使用Thread的setDaemon啟動后臺線程教程

    python使用Thread的setDaemon啟動后臺線程教程

    這篇文章主要介紹了python使用Thread的setDaemon啟動后臺線程教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python爬蟲調(diào)度器用法及實例代碼

    python爬蟲調(diào)度器用法及實例代碼

    在本篇文章里小編給各位整理了關(guān)于python爬蟲調(diào)度器用法及實例代碼,需要的朋友們可以參考學(xué)習(xí)下。
    2020-11-11

最新評論

富宁县| 翁牛特旗| 静安区| 齐河县| 毕节市| 五寨县| 建阳市| 离岛区| 连南| 怀集县| 宝山区| 祁门县| 博白县| 洞头县| 东乡县| 隆回县| 车险| 宁明县| 栾城县| 襄樊市| 德惠市| 余庆县| 左权县| 鄄城县| 叙永县| 道真| 鞍山市| 九江市| 应城市| 麦盖提县| 西乌珠穆沁旗| 乐山市| 两当县| 家居| 贺兰县| 九龙坡区| 永吉县| 孟村| 清苑县| 英吉沙县| 方城县|