Уникнення рядків запиту з wget --mirror


15

Я використовую wget --mirror --html-extension --convert-linksдля дзеркального відображення сайту, але я закінчую безліччю імен файлів у форматі post.php?id=#.html. Коли я намагаюся переглянути їх у браузері, це не вдається, оскільки браузер ігнорує рядок запиту під час завантаження файлу. Чи є спосіб замінити ?персонажа у назви файлів чимось іншим?


Відповідь --restrict-file-names=windowsспрацював правильно. У поєднанні з прапорами --convert-linksта --adjust-extension/ -E(раніше названими --html-extension, що також працює, але застаріло), воно створює дзеркало, яке поводиться так, як очікувалося.

wget  --mirror --adjust-extension --convert-links --restrict-file-names=windows http://www.example

Відповіді:


16

Дивіться --restrict-file-namesваріант. Хоча це не зовсім призначено для цієї конкретної мети, --restrict-file-names=windowsможливо, допоможе вам:

--restrict-file-names = режими

Змініть, які символи, знайдені у віддалених URL-адресах, потрібно уникати під час створення локальних імен файлів. [...]

Коли задано "windows", Wget уникає символів \, |, /,:,?, ", *, <,> Та контрольних символів у діапазонах 0--31 та 128--159. На додаток до цього , Wget в режимі Windows використовує +, а не: для відокремлення хоста і порту в локальних іменах файлів, а @ замість? Для відокремлення частини запиту імені файлу від решти, тому URL-адресу, яка буде збережена як www. xemacs.org:4300/search.pl?input=blah в режимі Unix буде збережено як www.xemacs.org+4300/search.pl@input=blah у режимі Windows.


2

Ваш веб-переглядач буде чудово переглядати його, якщо ви користуєтеся такою URL-адресою

file:///tmp/example.com/post.php%3Fid=1.html

замість

file:///tmp/example.com/post.php?id=1.html

Примітка. Якщо у вас виникають проблеми з внутрішніми посиланнями завантажених файлів, це може бути через те, що ви скасували wget до того, як це було зроблено з завантаженням. Оскільки ви вказали --convert-links та --html-extension (застосовується лише тоді, коли вони вказані), wget зазвичай виправлятиме посилання для використання% 3F замість?; однак це робить це наприкінці, після закінчення завантаження; якщо він був перерваний, він не зафіксував жодне з посилань, і ви залишилися в цьому складному становищі. Звичайно, ви завжди можете написати сценарій, щоб пройти і виправити посилання, але ...


це не зовсім правильно, wget, без перебоїв, оскільки така URL-адреса http://site.com/article.cgi?25буде збережена, як article.cgi?25.htmlдив. розділ 2.7 за адресою gnu.org/software/wget/manual/wget.html#HTTP-Options
Tzury Bar Yochay

-2

wget не має можливості змінювати збережене ім'я. Що вам, мабуть, потрібно буде зробити, це створити сценарій, який потрібно пройти та замінити? з _ чи чимось подібним. Wget поодинці не може цього зробити.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.