本项目为shell实现的整站模板抓取工具,便于前端模板资源的收集与学习。
-
操作系统 linux, suggest Debian 64bit
-
依赖工具 wget
-
WEB环境 nginx
# 请输入站点地址,如:
./getsite.sh http://www.baidu.com"
getsite.sh # 用于抓取整站,参数一为完整网页地址,如:http://www.baidu.com
rsync.sh # 用于将抓取的整站同步到线上服务器
index.html # 模板站点引导文件
README.MD # 说明文档
问题描述:
- 部分js css等资源引用 - 源地址为 xxx.js?ver=1.2.3 - 实际文件 xxx.js
- 需要批量替换文件名,除去参数后缀
解决方案:
# 替换文件参数后缀
rename 's/\?url\=.*//' * `find . -name "*url=*"`
rename 's/\?ver\=.*//' * `find . -name "*ver=*"`
rename 's/\?v\=.*//' * `find . -name "*v=*"`
# getsite.sh加入参数
--restrict-file-names=OS
# wget: --restrict-file-names: Invalid restriction ‘OS’,
# use [unix|vms|windows],[lowercase|uppercase],[nocontrol],[ascii].
抓取静态页面URL存在.aspx等后缀文件,如何转为html静态页面浏览?
nginx文件中增加;
# 所有后缀解析为html静态页面
add_header Content-Type 'text/html; charset=utf-8';
地址栏中URL为 xxx/ask_end.aspx?cid=28
文件夹中实际路径为 xxx/ask_end.aspx?cid=28
html根目录地址
# html中,/会导致URL从根目录获取
src="/Scripts/underscore.js"
# 修改为如下路径
src="/newmbone.wezhan.cn/Scripts/underscore.js"
# 批量替换脚本
sed -i "s/=\"\//=\"\/newmbone.wezhan.cn\//g" `grep -rl "=\"\/"`
# ?符号在Unicode编码中为?
# 替换掉href中的URL地址即可
sed -i "s/aspx\?/aspx\&\#63\;/g" `grep -rl "aspx\?"`
css后根目录地址
# 下载html中RenderCss文件,
RunTime/RenderRunTimeCss?cid=content%2Fsitefiles5%2F5552%2Fcss%2Fpc%2F42451_zh-CN.css%3Fdt%3D635751159446896412
# 替换RunTime目录文件为真实名称
mv RunTime/RenderRunTimeCss?cid=content%2Fsitefiles5%2F5552%2Fcss%2Fpc%2F42451_zh-CN.css%3Fdt%3D635751159446896412 1265_zh-CN.css
# 批量替换脚本(正则匹配多种Render随机路径,替换为正确文件)
sed -i "s/RenderRunTimeCss.*[0-9]\ /1265_zh-CN.css/g" `grep -rl 'RenderRunTimeCss.*[0-9]\ '`
# File: /etc/nginx/site-available/demo_case
server {
listen 80;
listen [::]:80;
server_name case.demo.com;
root /var/www/demo_case;
index index.html index.htm;
location / {
# 任意后缀文件,解析为html静态页面
add_header Content-Type 'text/html; charset=utf-8';
try_files $uri $uri/ =404;
}
}
- CSO ryanemax, The Author.
Copyright © 2015 FutureStack Inc. All Rights Reserved