2013-11-08 3 views
20

Я пытаюсь получить работает веб-страниц с Wget, и это будет хорошо для большинства сайтов с помощью следующей команды:Wget добавляет строку запроса в результирующий файл

wget -p -k http://www.example.com 

В этих случаях я в конечном итоге с index.html и необходимые CSS/JS и т. д.

ОДНАКО, в определенных ситуациях URL-адрес будет иметь строку запроса, и в этих случаях я получаю index.html с добавленной строкой запроса.

Пример

www.onlinetechvision.com/?p=566 

В сочетании с вышеприведенной команды Wget приведет:

index.html?page=566 

Я попытался с помощью --restrict-файлов-имен = вариант окна, но это только заставляет меня до

[email protected]=566 

Может ли кто-нибудь объяснить, почему это необходимо и как я могу закончить с помощью обычного файла index.html?

ОБНОВЛЕНИЕ: Я нахожусь на заборе, придерживаясь другого подхода. Я узнал, что могу взять первое имя файла, которое wget сохраняет, анализируя вывод. Поэтому имя, появившееся после сохранения: есть тот, который мне нужен.

Однако это обернуто этим странным символом â - вместо того, чтобы просто удалить этот жесткий диск - откуда это происходит?

+0

Вы уже пробовали этот синтаксис: curl http: // {site, host} .host [1-5] .com -o "# 1_ # 2". Возможно, это можно будет скорректировать с учетом ваших потребностей. – Marged

ответ

-1

Мое решение сделать рекурсивное сканирование вне Wget: структура каталогов

  1. получить с Wget (нет файла)
  2. цикл, чтобы получить файл главного входа (index.html) от каждого реж

Это хорошо работает с сайтами wordpress. Мог пропустить несколько страниц.

#!/bin/bash 

# 
# get directory structure 
# 
wget --spider -r --no-parent http://<site>/ 

# 
# loop through each dir 
# 
find . -mindepth 1 -maxdepth 10 -type d | cut -c 3- > ./dir_list.txt 

while read line;do 
     wget --wait=5 --tries=20 --page-requisites --html-extension --convert-links --execute=robots=off --domain=<domain> --strict-comments http://${line}/ 

done < ./dir_list.txt 
+0

Идея состоит в том, чтобы использовать -p -k для получения локальной рабочей копии страницы, поэтому включая CSS и JavaScript - чтобы не получить весь сайт , Плюс - мне нужно знать, какой главный файл - тот, который мне нужен для «просмотра» - теперь я получаю index.html? Page = xxx, а иногда просто index.html и иногда что-то сумасшедшее, как Report123 – user1914292

0

Чтобы ответить на вопрос о том, почему это необходимо, помните о том, что веб-сервер может возвращать разные результаты на основе параметров в строке запроса. Если запрос для index.html?page=52 возвращает разные результаты от index.html?page=53, вы, вероятно, не захотите, чтобы обе страницы были сохранены в том же файле.

Каждый HTTP-запрос, который использует другой набор параметров запроса, является буквально запросом для отдельного ресурса. wget не может предсказать, какое из этих изменений и не будет значительным, поэтому он делает консервативную вещь и сохраняет URL-адреса параметров запроса в имени файла локального документа.

3

Если вы пытаетесь с параметром "--adjust-расширение"

wget -p -k --adjust-extension www.onlinetechvision.com/?p=566 

вы подойти ближе. В папке www.onlinetechvision.com появится файл с исправленным расширением: [email protected]=566.html или index.html?p=566.html на * NiX-системах. Теперь просто изменить этот файл на index.html даже с помощью скрипта.

Если вы на ОС Microsoft убедитесь, что у вас есть последний вариант Wget - она ​​также доступна здесь: https://eternallybored.org/misc/wget/

+0

Я закончил это, но На самом деле, я не искренне люблю это. Он чувствует себя немного взломанным, но сейчас он работает. Я объединил его со сканированием каталога после wget, чтобы найти страницу .html и переименовать ее или использовать. – user1914292

0

Строка запроса требуется из-за веб-дизайна, что сайт делает, используя один и тот же стандарт index.html для всего содержимого, а затем с помощью строки запроса вывести содержимое с другой страницы, например, со скриптом на стороне сервера. (это может быть клиентская сторона, если вы смотрите в JavaScript).

Вы пытались использовать --no-cookies, это могло бы хранить эту информацию с помощью cookie и вытаскивать ее, когда вы нажимаете на страницу. также это может быть вызвано логикой перезаписи URL-адресов, с которой у вас будет мало контроля со стороны клиента.

Смежные вопросы