Страница 1 из 1

Добавлено: 2006-09-18 9:51:23
serge
Лично я писал shell скрипт который меняет ссылки в теле html. Готовых решений не нашел. Кста, тоже для http://www.lissyara.su. И вообще как-то Лисяра обещал выложить зеркало своего сайта, но пока жду :wink:

Добавлено: 2006-09-18 9:53:35
serge
Странно... чет мой ответ оказался выше вопроса??? :?

Добавлено: 2006-09-18 12:38:21
voodoo pr
voodoopr писал(а): Сами по себе файлы в браузере смотрятся но ссылки остались как при скачивании с сервера т.е. со знаками вопросов и без расширения html.

Как лечить ?

Man смотрел, но ничего полезного не нашел.
И все таки маны полезная штука. Существует ключик -k. Выдержка из http://www.opennet.ru/man.shtml?topic=w ... &russian=0 .
-k
--convert-links
После завершения загрузки конвертировать ссылки в документе для просмотра в автономном режиме. Это касается не только видимых ссылок на другие документы, а ссылок на все внешние локальные файлы.
Каждая ссылка изменяется одним из двух способов:

*
Ссылки на файлы, загруженные Wget изменяются на соответствующие относительные ссылки.
Например: если загруженный файл /foo/doc.html, то ссылка на также загруженный файл /bar/img.gif будет выглядеть, как ../bar/img.gif. Этот способ работает, если есть видимое соотношение между папками одного и другого файла.

*
Ссылки на файлы, не загруженные Wget будут изменены на абсолютные адреса этих файлов на удаленном сервере.
Например: если загруженный файл /foo/doc.html содержит ссылку на /bar/img.gif (или на ../bar/img.gif), то ссылка в файле doc.html изменится на http://host/bar/img.gif.

Благодаря этому, возможен автономный просмотр сайта и файлов: если загружен файл, на который есть ссылка, то ссылка будет указывать на него, если нет - то ссылка будет указывать на его адрес в интернет (если такой существует). При конвертировании используются относительные ссылки, значит вы сможете переносить загруженный сайт в другую папку, не меняя его структуру.

Только после завершения загрузки Wget знает, какие файлы были загружены. Следовательно, при параметре -k конвертация произойдет только по завершении загрузки.
Работает ...

Все б хорошо, только последний абзац напрягает. А если размер сайта неизвестен !?
И когда wget решит что все закачал, проводит конвертацию ссылок.
sergee писал(а): Лично я писал shell скрипт который меняет ссылки в теле html. Готовых решений не нашел.
Было бы неплохо его увидеть :roll:

Добавлено: 2006-09-18 12:41:32
voodoo pr
Тему однако колбасит, от себя сообщение не смог вставить ...

Добавлено: 2006-09-18 14:44:47
serge
Скрипт выложу... как токо до дому доберусь. По поводу -к для wget.... не совсем нормально ссылки преобразовались, либо я не все понял.

Добавлено: 2006-09-18 21:41:50
serge
Выкладываю скрипт правки ссылок в html доках и их имен из вида index.html_id=1167
к виду index_id=1167.html для сайта http://www.lissyara.su. Просьба строго не судить... уверен что скрипт корявый, но тем не менее рабочий.

Код: Выделить всё

#!/usr/local/bin/bash

/bin/ls -l | grep _ | awk '{print $9}' > tmp
n=1
cat tmp | while read str
do
  echo $n $str >> old
  let "n += 1"
done

cat tmp | sed 's/\./ /' | sed 's/_/ /' | awk '{print $1 "_" $3 "." $2}' > tmp
n=1
cat tmp | while read str
do
  echo $n $str >> new
  let "n += 1"
done

join old new > tmp

cat tmp | awk '{print "s/" $2 "/" $3 "/g"}' > rename

sed -f rename index.html > tmp
mv tmp index.html

cat old | awk '{print $2}' | while read str
do
  cat rename | sed 's/\// /g' | grep $str | awk '{print $3}' > tmp
  cat tmp | while read str2
  do
    sed -f rename $str > $str2
    rm $str
  done
done

rm tmp
rm old
rm new
rm rename
rm tmp2

Добавлено: 2006-09-18 21:50:37
serge
Еще по поводу правки ссылок самим wget'ом. С ключем -k wget правил ссылку типа index.php?id=1 в index.php_id=1 (если память не изменяет...). Меня это не устроило, т.к. для автономного просмотра это подходит, но если выкладывать на web сервер (напр. apache), то ему нужны "правильные" расширения (html, php ...), иначе отображаются html теги страницы.

wget и ссылки в теле страничек

Добавлено: 2006-12-16 19:34:04
voodoopr
Доброго времени суток!

Хочется зеркалировать сайты для собственных нужд, да ещё и смотреть их под виндой через самбу. С заменой запрещеных символов в именах файлов для винды вроде разобрался.
Но как его заставить сопоставлять ссылки в страничках новым именам файлов.
Вот чего добился (рассмотрим на примере lissyara.su :)):

# /usr/local/bin/wget -E -m --restrict-file-names='windows' --read-timeout=30 -nH --directory-prefix=/data0/ftp0/mirror/http.www.lissyara.su http://www.lissyara.su

чё получили:


# ls -l /data0/ftp0/mirror/http.www.lissyara.su
total 114
drwxr-xr-x 2 root wheel 512 Sep 16 22:06 images
-rw-r--r-- 1 root wheel 18859 Jun 21 07:14 index.html
-rw-r--r-- 1 root wheel 18625 Aug 22 2005 index.html@id=1003.html
-rw-r--r-- 1 root wheel 17507 Nov 21 2005 index.html@id=1004.html
-rw-r--r-- 1 root wheel 16441 Nov 21 2005 index.html@id=1005.html
-rw-r--r-- 1 root wheel 16117 Nov 21 2005 index.html@id=1006.html
-rw-r--r-- 1 root wheel 17077 Sep 15 2005 index.html@id=1020.html
-rw-r--r-- 1 root wheel 70 Mar 8 2006 robots.txt

Сами по себе файлы в браузере смотрятся но ссылки остались как при скачивании с сервера т.е. со знаками вопросов и без расширения html.

Как лечить ?

Man смотрел, но ничего полезного не нашел.