wget download&相对链接转换错过了css url()内容的空白编码

时间:2012-11-08 23:55:48

标签: css encoding download whitespace wget

当我尝试下载网站并尝试将某个域内的所有链接转换为相关链接时,我遇到了一个相当特殊的情况。我使用的wget命令是:

wget -q -r -nH -H -D{domain-name} -l 5 -p -E -k -e robots=off {url}

它可以正常下载所有必需的页面和资源。然后,它继续使用相对路径转换源页面中的所有链接。在此过程中,它甚至会执行一些路径编码,以便网站从下载文件夹中顺利运行。

我面临的问题是:

假设我有一个指向原始index.html中样式表的链接,如此 -

<link rel="stylesheet" href="/templates/source/booga booga/foobar.css" type="text/css" />

wget从服务器下载正确的css,并在index.html中编码指向css文件的链接,如下所示 -

<link rel="stylesheet" href="/templates/source/booga&#32;booga/foobar.css" type="text/css" />

到目前为止一切顺利。所有浏览器都能找到样式表。

现在,样式表foobar.css包含一个类似的部分 -

.foo-bar-button {
font-size: 12px;
padding: 10px 20px 10px 30px;
background: url(/templates/professional/1/main/en/gfx/booga%20booga/foo-bar.png) left 55%  no-repeat;
display: block;
width: 90px;
}

wget下载背景图像,然后继续转换和/或编码它的路径。它最终得到了这个 -

.foo-bar-button {
font-size: 12px;
padding: 10px 20px 10px 30px;
background: url(/templates/professional/1/main/en/gfx/booga booga/foo-bar.png) left 55%  no-repeat;
display: block;
width: 90px;
}

下载/转换的css文件中背景图像的路径现在具有未编码的空白。 IE可以很好地找到图像并且网站可以正常工作。 Chrome / Firefox / Opera无法处理,按钮也不可见。

我有多种情况,样式表中url()中的空格会导致样式不正确。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

find -name *.css -exec sed -e 's/\(url([^)]*\) /\1%20/g' -i \{\} \;

:)。如果网址最多可包含X个空格,则重复此次X次。

答案 1 :(得分:0)

我知道这是一个老问题,但我在寻找同样的问题时找到了它。

我提出了另一种解决方案:将网址放在引号之间:

`sed -re "s/url\((.+)\)(.+)/url\(\'\1\'\)\2/g" file.css -i;`

应该这样做。