LINUX.ORG.RU

Загружать веб-страничку, а потом просматривать

 ,


1

4

Я загружаю веб-странику wget'ом, а потом просматриваю её в «links2 -g». «wget» я стартую со следующими параметрами:

OPT_LINKS2G="-q -E -H -k -p -t 3 -T 10 --user-agent='Mozilla/5.0 (X11; Linux i686; rv:10.0) Gecko/20100101 Firefox/33.0'"
Но когда я открываю загруженный wget'ом html-файл в «links2 -g», я вижу в статусной строке «links2», что происходит дозагрузка контента (ещё 5-7 сек.). Можно как-то скачивать странички «полностью», чтобы не происходила дозагрузка?

Я наблюдаю, к примеру, этот эффект на заглавной страничке русской Википедии.

«wget» я стартую со следующими параметрами:
на заглавной страничке русской Википедии.

Откуда эта манера описывать ввод словами? У вас точная формулировка приказа есть, но нам вы ее предлагаете восстановить по описанию.

$ wget -q -E -H -k -p -t 3 -T 10 \
  --user-agent='Mozilla/5.0 (X11; Linux i686; rv:10.0) Gecko/20100101 Firefox/33.0' \
  "https://ru.wikipedia.org/"

Так?

Можно как-то скачивать странички «полностью», чтобы не происходила дозагрузка?

Можно, конечно, просто википедики против, чтоб вы у них загружали картинки (см. строчку 151 в https://ru.wikipedia.org/robots.txt). А ГНУ Вэ-гет — это порядочный робот, и он по-умолчанию подчиняется их желанию.

Прикажите ему не подчиняться, если настаиваете:

$ wget -e 'robots=off' --page-requisites --convert-links --adjust-extension \
  "https://ru.wikipedia.org/"

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 3)
Ответ на: комментарий от Zmicier

Спасибо, по вашему совету работает. После доработки убрал кавычки у robots=off, т.к. передаю параметры в переменной.

Замечание постараюсь учесть.

forest22
() автор топика
Ответ на: комментарий от Zmicier

Может быть объясните, до конца не понимаю..

Я стартую «wget» в скрипте следующим образом:

wget $OPT $HTTP -P $OFFDIR
где:
OPT="-q -e robots=off -E -H -k -p -t 3 -T 10"
HTTP="https://ru.wikipedia.org/"
OFFDIR=/tmp/offline
Так, как выше, работает.

Если же я пишу так:

OPT="-q -e 'robots=off' -E -H -k -p -t 3 -T 10"
то получаю ошибку:
$ wget $OPT $HTTP -P $OFFDIR
wget: Invalid --execute command ‘'robots=off'’
Я, вообще-то, не понимаю почему ошибка.

forest22
() автор топика
Ответ на: комментарий от forest22

Я стартую «wget» в скрипте следующим образом:

Ну наконец-то.

OPT="-q -e robots=off -E -H -k -p -t 3 -T 10"
wget $OPT $HTTP -P $OFFDIR

Я повелся на это ваше OPT_LINKS2G="-q -E -H -k -p -t 3 -T 10 --user-agent='Mozilla/5.0 (X11; Linux i686; rv:10.0) Gecko/20100101 Firefox/33.0'" — подумал, что вы что-то хитрое делаете, поскольку иначе я даже боюсь предположить, как вы не заметили, что у вас полный бред получается:

$ OPT="--user-agent='Mozilla/5.0 (X11; Linux i686; rv:10.0) Gecko/20100101 Firefox/33.0'"
$ wget $OPT http://example.org
--2016-07-09 04:45:01--  http://(x11;/
Resolving (x11; ((x11;)... failed: Name or service not known.
wget: unable to resolve host address ‘(x11;’
--2016-07-09 04:45:01--  http://linux/
Resolving linux (linux)... failed: Name or service not known.
wget: unable to resolve host address ‘linux’
--2016-07-09 04:45:02--  http://i686;/
Resolving i686; (i686;)... failed: Name or service not known.
wget: unable to resolve host address ‘i686;’
--2016-07-09 04:45:02--  ftp://rv/10.0)
           => ‘10.0)’
Resolving rv (rv)... failed: Name or service not known.
wget: unable to resolve host address ‘rv’
--2016-07-09 04:45:02--  http://gecko/20100101
Resolving gecko (gecko)... failed: Name or service not known.
wget: unable to resolve host address ‘gecko’
--2016-07-09 04:45:02--  http://firefox/33.0'
Resolving firefox (firefox)... failed: Name or service not known.
wget: unable to resolve host address ‘firefox’
--2016-07-09 04:45:03--  http://example.org/
Resolving example.org (example.org)... 93.184.216.34, 2606:2800:220:1:248:1893:25c8:1946
Connecting to example.org (example.org)|93.184.216.34|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1270 (1.2K) [text/html]
Saving to: ‘index.html.2’

index.html.2                  100%[=================================================>]   1.24K  --.-KB/s   in 0s     

2016-07-09 04:45:03 (111 MB/s) - ‘index.html.2’ saved [1270/1270]

FINISHED --2016-07-09 04:45:03--
Total wall clock time: 2.3s
Downloaded: 1 files, 1.2K in 0s (111 MB/s)

Суть, грубо говоря, в чем: набор ключей — это не строка, это много строк, разделенных пробелами. Если вы хотите хранить много строк в одной переменной, то эта переменная, очевидно, должна быть массивом:

$ opts=( -e 'robots=off' --page-requisites --convert-links --adjust-extension )
$ destdir='/tmp/offline'
$ uri='https://ru.wikipedia.org/'
$ wget "${opts[@]}" --directory-prefix="$destdir" "$uri"

И да, "$destdir" и "$uri", разумеется, тоже должны быть в кавычках.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

подумал, что вы что-то хитрое делаете

Да, вы коечно спросите, что такое хитрое можно сделать, когда у вас непонятно откуда взялась такая вот строка со сложенными кавычками, а вам из нее нужен массив строк. Ну, что-нибудь такое:

$ str="--user-agent='Mozilla/5.0 (X11; Linux i686; rv:10.0) Gecko/20100101 Firefox/33.0'"
$ eval set -- $str
$ wget "$@" 'http://example.org'
Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

Ну и вообще, я напрочь упустил, зачем вообще собирать опции в переменной.

Чем плохо было написать в сценарии по-простому:

wget -e 'robots=off' \
     --page-requisites --convert-links --adjust-extension \
     --directory-prefix="$destdir" \
     "$uri"

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

Ну и вообще, я напрочь упустил, зачем вообще собирать опции в переменной.

Мне просто кажется, что это упрощает код. В начале скрипта я декларирую две альтернативные строки параметров для вгет'а:

OPT_W3M="-q -E -k -t 3 -T 10"
OPT_LINKS2G="-q -e robots=off -E -H -k -p -t 3 -T 10"
А потом вызываю вгет с одной из двух переменных. В зависимости, каким браузером я просматриваю затем загруженный контент(«w3m» или «links2 -g»).

Если интересно, ниже скрипт, и что получается. Цель копотни - получить стабильную страничку в браузере (без всякой дозагрузки во время просмотра) на часто опрашиваемых ресурсах (занесены в панель(фбпанель)).

Скрипт: https://nopaste.me/view/fac24053

В3м: http://imgur.com/RgjjlnF

Линкс2 -г: http://imgur.com/6UJMaP9

forest22
() автор топика
Ответ на: комментарий от forest22

Замечание: вгет должен быть последней версии(1.18) потому что иначе неправильно генерируется имя скачиваемого нтмл-файла.

forest22
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.