使用wget 缓存api文档到本地
使用wget 缓存api文档到本地

使用wget 缓存api文档到本地

使用wget 缓存api文档到本地

查看一些api文档时,经常会因为网络或权限等原因无法重复在线加载,那么把文档以html的方式缓存到本地,直接用浏览器离线可查看就是好了, 比如nodejs文档, 本文介绍一种使用wget缓存文档的方法。如下

wget \
  --recursive \
  --no-clobber \
  --execute robots=off \
  --page-requisites \
  --html-extension \
  --convert-links \
  --restrict-file-names=windows \
  --random-wait \
  --domains nodejs.org \
  --no-parent \
  https://nodejs.org/docs/v20.17.0/

file

参数解释:

  1. --recursive

    • 解释:递归下载。wget 会下载指定 URL 及其所有链接的页面。
    • 作用:确保下载整个网站或指定目录的内容。
  2. --no-clobber

    • 解释:不覆盖现有文件。如果文件已经存在,wget 不会重新下载它。
    • 作用:避免重复下载文件,节省带宽和时间。
  3. --execute robots=off

    • 解释:忽略 robots.txt 文件。robots.txt 通常用于指示哪些页面不应被爬取。
    • 作用:允许 wget 下载被 robots.txt 禁止的页面。
  4. --page-requisites

    • 解释:下载页面所需的所有资源(如图片、样式表、脚本等)。
    • 作用:确保下载的页面在离线状态下也能正常显示。
  5. --html-extension

    • 解释:将所有下载的 HTML 文件保存为 .html 扩展名。
    • 作用:确保所有 HTML 文件都有正确的扩展名,便于浏览器识别。
  6. --convert-links

    • 解释:将下载页面中的链接转换为本地链接。
    • 作用:确保下载的页面在离线状态下也能正常导航。
  7. --restrict-file-names=windows

    • 解释:限制文件名符合 Windows 文件系统的命名规则。
    • 作用:确保下载的文件名在 Windows 系统中不会出现非法字符。
  8. --random-wait

    • 解释:在请求之间随机等待一段时间(0.5 到 1.5 倍的 --wait 时间)。
    • 作用:避免对服务器造成过大压力,模拟人类访问行为。
  9. --domains nodejs.org

    • 解释:限制下载的域名仅为 nodejs.org
    • 作用:防止 wget 下载其他域名的内容,避免不必要的流量和资源消耗。
  10. --no-parent

    • 解释:不访问父目录。wget 不会上升到父目录。
    • 作用:确保 wget 只下载指定目录及其子目录的内容。
  11. https://nodejs.org/docs/v20.17.0/

    • 解释:要下载的初始 URL。
    • 作用:指定 wget 开始下载的页面。

当然除了wget外,还有更加专业的httrack工具更加简单,这里就不展开了。
特别需要注意的是--execute robots=off参数, 大部分网站会在爬虫文件里指定不允许抓取指定目录,这里强制忽略这个。如果不加的话,会仅仅得到一个index.html文件,其他文件不会被缓存。

下载效果如下:

file

总结:

这个 wget 命令的目的是递归下载 https://nodejs.org/docs/v20.17.0/ 目录及其所有子目录的内容,同时确保下载的页面在离线状态下也能正常显示和导航。命令还考虑了文件名兼容性、避免重复下载、模拟人类访问行为等因素。