▱ 笔记#脚本

本地树形目录索引脚本

自动化生成方案(PowerShell 脚本)

D:\ABC 目录下新建并运行 build_for_spider.ps1。该脚本会遍历所有子目录,并在每个文件夹下生成标准的静态 HTML 文件:

$targetDir = "D:\ABC"
$imgExts = @('.jpg', '.jpeg', '.png', '.webp', '.gif', '.bmp')

# 递归为每个子目录生成内容页
Get-ChildItem -LiteralPath $targetDir -Directory -Recurse | ForEach-Object {
    $folder = $_
    $images = Get-ChildItem -LiteralPath $folder.FullName -File | Where-Object { 
        $imgExts -contains $_.Extension.ToLower() 
    }

    $imgTags = ($images | ForEach-Object { 
        "<p><img src=""$($_.Name)"" alt=""$($_.Name)""></p>" 
    }) -join "`n    "

    $subFolders = Get-ChildItem -LiteralPath $folder.FullName -Directory
    $subLinks = ($subFolders | ForEach-Object { 
        "<li><a href=""$($_.Name)/index.html"">$($_.Name)</a></li>" 
    }) -join "`n    "

    $html = @"
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>$($folder.Name)</title></head>
<body>
  <div class="content">
    <h1>$($folder.Name)</h1>
    <div class="images">
    $imgTags
    </div>
    <ul class="sub-folders">
    $subLinks
    </ul>
  </div>
</body>
</html>
"@
    [System.IO.File]::WriteAllText("$($folder.FullName)\index.html", $html, [System.Text.Encoding]::UTF8)
}

# 生成根目录列表页 (D:\ABC\index.html),列出所有顶级子文件夹
$rootFolders = Get-ChildItem -LiteralPath $targetDir -Directory
$rootLinks = ($rootFolders | ForEach-Object { 
    "<li><a href=""$($_.Name)/index.html"">$($_.Name)</a></li>" 
}) -join "`n  "

$rootHtml = @"
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>相册索引</title></head>
<body>
  <ul class="folder-list">
  $rootLinks
  </ul>
</body>
</html>
"@
[System.IO.File]::WriteAllText("$targetDir\index.html", $rootHtml, [System.Text.Encoding]::UTF8)
Write-Host "所有静态采集页面生成完成!"

火车头采集器规则配置

生成完成后,IIS 站点绑定指向 D:\ABC,在火车头中进行如下极简配置:

  • ​起始网址(列表页):[http://127.0.0.1/index.html]
  • ​获取内容页网址(列表规则)​:
    • 区域开始:<ul class="folder-list">
    • 区域结束:</ul>
    • 提取链接正则/标签:<a href="[参数]/index.html">[参数]</a>
  • ​如果有多级目录(多层级爬取):
    • 在火车头规则中勾选“允许抓取二级列表/递归遍历”,匹配子目录链接 <ul class="sub-folders">...</ul>
  • 内容标签提取​:
    • 标题​:<h1>[参数]</h1>
    • 图片正文​:
      • 区域开始:<div class="images">
      • 区域结束:</div>
      • 字段处理:直接使用“下载图片并替换为本地/指定路径”。