wget для клонирования веб-сайта со ссылками на каталог, а не на index.html

Я хотел бы клонировать блог WordPress с помощью wget, чтобы я мог включить его как статический контент в веб-приложение, которое я пишу.

На данный момент я использую следующее для клонирования сайта:

wget -rk http://sitename.com

Это работает хорошо, но ссылки в сгенерированном html указывают на файл index.html. Я хотел бы, чтобы эти ссылки указывали на каталог, содержащий файл.

например для страницы http://sitename.com/blog-post-about-cats/ wget создает каталог «blog-post-about-cats» и помещает туда файл index.html. Ссылки на этот пост в блоге записываются как «../blog-post-about-cats/index.html», где я хочу, чтобы они были «../blog-post-about-cats/».

Я думаю, я хочу это, потому что я думаю, что index.html в URL-адресе выглядит немного уродливым, и все эти страницы посвящены представлению.

Любые идеи? Возможно ли это с помощью wget или другого инструмента командной строки?

Спасибо.


person James P McGrath    schedule 02.02.2012    source источник


Ответы (2)


Я предполагаю, что wget не делает этого по умолчанию, потому что ваш локальный веб-сервер может быть настроен на обслуживание индексных страниц для каталогов, а не index.html. Самое простое решение — последующая постобработка всех извлеченных файлов HTML с помощью регулярного выражения:

find -name '*.html' | xargs sed -rie 's/href="([^"]*)\/index\.html"/href="\1\/"/gi'

Если страницы на этом сайте представляют собой файлы другого типа, такие как файлы .php, замените «*.php» или что-то подходящее. Функция регулярного выражения состоит в том, чтобы идентифицировать строки формы href="stuff/index.html" и удалить index.html. Xargs и find используются для применения этого ко всем страницам, а флаг «-i» для sed заставляет его изменять файлы на месте. Флаги "gi" в регулярном выражении заменяют все вхождения и не учитывают регистр (поскольку HTML нечувствителен к регистру).

person Chiara Coetzee    schedule 02.02.2012
comment
Спасибо, приятель, это поможет. Подобно тому, что я придумал за это время, но регулярное выражение ваших решений намного приятнее. - person James P McGrath; 03.02.2012

Вы можете позволить wget сделать это за вас. Попробуйте использовать:

wget –mirror –convert-links –html-extension –wait=1 https://example.com/

Вы можете найти более подробную информацию здесь: https://aawaara.com/post/188869436762/how-to-clone-any-website-in-the-world-and-host-it

person amit_saxena    schedule 07.11.2019