Shell 命令行实现将一个站点页面全部下载到本地并替换其中链接的
发布时间:2020-12-15 16:34:52 所属栏目:安全 来源:网络整理
导读:Shell 命令行实现将一个站点页面全部下载到本地并替换其中链接的脚本 不知道为什么,我总想用 Shell 脚本来实现把一个站点内容给下载下来。但是下载什么站点我确不知道。今天尝试了一下利用 curl 实现了下载一个站点列表的 demo 算是小试牛刀。 当脚本成功之
Shell 命令行实现将一个站点页面全部下载到本地并替换其中链接的脚本不知道为什么,我总想用 Shell 脚本来实现把一个站点内容给下载下来。但是下载什么站点我确不知道。今天尝试了一下利用 当脚本成功之后,我知道,要把这个站点完全下载下来也是没有问题的。不过是需要更加复杂的循环和匹配而已。 接下来有工作要做,所以 shell 的学习暂时先告一段落。 实现代码#!/bin/bash
echo '--开始下载首页--'
curl -s 'http://man.linuxde.net/par/5' > ./html/index.html
mh=./html/index.html
sl=$(nl $mh | grep '<div class="list_bd clearfix">' | head -1 | sed 's/^[ ]*//g' | cut -d ' ' -f1)
el=$(nl $mh | grep "<div class='paging'>" | head -1 | sed 's/^[ ]*//g' | cut -d ' ' -f1)
sed -n "$sl","$el"'p' $mh > main.htm
echo '--开始下载内页--'
#<a href="
while read line; do
url=$(echo $line | grep '<a href="' | sed 's/<div class="name"><a href="//g' | cut -d '"' -f1)
if [[ -n $url ]]; then
echo '--开始下载' $name '页面--'
name=$(echo $url | cut -d '/' -f4)
html='./html/'$name'.html'
curl -s $url > $html
# echo '--开始处理' $name '页面链接--'
# sed -i 's/http://man.linuxde.net//g' $html
fi
done < main.htm
echo '--页面下载完成--'
echo '--处理页面链接--'
sed -i '' 's/http://man.linuxde.net///g' $(grep -rl 'http://man.linuxde.net' ./html)
sed -i '' 's/" title="/.html" title="/g' $(grep -rl '" title="' ./html)
echo '--链接处理完成--'
实现原理
然后就大功告成了。 不过 后续补充看了下 wget --mirror -p --convert-links -P ./ http://man.linuxde.net/
神奇的 以上脚本均在 mac 下测试通过,在 Linux 下可能会有稍许不同。 本文由 FungLeo 原创,允许转载,但转载必须保留首发链接。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |