我有一個網站httracks,並且生成了很多不同級別的文件。但該網站使用picture
/source
標籤srcset
屬性httrack不處理,所有這些圖片不能很好地離線。來自httrack的錯誤srcset屬性
httrack如果使用選項Attempt to detect all links (even in unknown tags/javascript code)
(在winhttrack中)並將所有圖像複製到本地存儲,可以看到鏈接。但它並沒有改變通往親戚的道路。
現在我需要一個可以編輯所有html文件的腳本(powershell/gnu bash),以便將srcset
中的路徑修改爲正確的相對路徑。
我的想法是將每個文件夾遞歸爲../
作爲插入/替換sed
的參數。
做什麼:
示例文件:
index.html
cat1/product1.html
cat2/option3/product5.html
每個包含像一些圖片標籤:
<picture>
<source srcset="/images/img1_low.jpg, /images/img1_low_ret.jpg x2" media="(max-width: 470px)">
<source srcset="/images/img1_med.jpg, /images/img1_med_ret.jpg x2" media="(max-width: 960px)">
<source srcset="/images/img1_hi.jpg, /images/img1_hi_ret.jpg x2" media="(min-width: 961px)">
<img src="../images/img1_hi.jpg" />
</picture>
圖像標籤的路徑總是正確的,從httrack
做內:(images/img1_hi.jpg
,../images/img1_hi.jpg
,../../images/img1_hi.jpg
)
但源代碼還必須包含匹配pathes:
index.html中:
<picture>
<source srcset="images/img1_low.jpg, images/img1_low_ret.jpg x2" media="(max-width: 470px)">
<source srcset="images/img1_med.jpg, images/img1_med_ret.jpg x2" media="(max-width: 960px)">
<source srcset="images/img1_hi.jpg, images/img1_hi_ret.jpg x2" media="(min-width: 961px)">
<img src="images/img1_hi.jpg" />
</picture>
在CAT1/product1.html
:
<picture>
<source srcset="../images/img1_low.jpg, ../images/img1_low_ret.jpg x2" media="(max-width: 470px)">
<source srcset="../images/img1_med.jpg, ../images/img1_med_ret.jpg x2" media="(max-width: 960px)">
<source srcset="../images/img1_hi.jpg, ../images/img1_hi_ret.jpg x2" media="(min-width: 961px)">
<img src="../images/img1_hi.jpg" />
</picture>
在CAT2
/option3/product5.html:
<picture>
<source srcset="../../images/img1_low.jpg, ../../images/img1_low_ret.jpg x2" media="(max-width: 470px)">
<source srcset="../../images/img1_med.jpg, ../../images/img1_med_ret.jpg x2" media="(max-width: 960px)">
<source srcset="../images/img1_hi.jpg, ../../images/img1_hi_ret.jpg x2" media="(min-width: 961px)">
<img src="../../images/img1_hi.jpg" />
</picture>
我嘗試:
#!/usr/bin/bash
function workfolder {
# $1 = current folder
# $2 = prefix upfolders
pushd $PWD
cd $1
for i in $(ls) ; do
if [ -d $i ] ; then
workfolder $i ../$2
fi
done
for i in $(ls *.html) ; do
sed -i 's/srcset="images/srcset="$2images/g' $i
sed -i 's/, images/, $2images/g' $i
done
popd
}
workfolder .
預留太多錯誤的sed的替換$2
沒有解決,但litteraly取代的。