1

Я использую следующий код для загрузки списка файлов PDF:

wget -i list.txt -A .pdf

Некоторые PDF-файлы загружены правильно. Тем не менее, некоторые файлы PDF не загружаются должным образом. Когда я проверяю журнал, я вижу следующий отчет:

--2013-04-09 11:25:42--  http://amazon.com/111.pdf
Reusing existing connection to amazon.com:80.
HTTP request sent, awaiting response... 200 No headers, assuming HTTP/0.9
Length: unspecified
Saving to: `111.pdf'


    [                                         <=>       ] 1,045       --.-K/s   in 2m 9s


2013-04-09 11:27:51 (8.11 B/s) - Read error at byte 1045 (Connection reset by peer).Retrying.


--2013-04-09 11:27:52--  (try: 2)  http://amazon.com/111.pdf
Connecting to amazon.com (amazon.com)|00.00.55.888|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2680728 (2.6M) [application/pdf]
Saving to: `111.pdf'


61% [==============================>                    ] 1,649,221   10.0K/s   in 2m 41s


2013-04-09 11:30:41 (10.0 KB/s) - Read error at byte 1649221/2680728 (Connection reset by peer). Retrying.


--2013-04-09 11:30:43--  (try: 3)  http://amazon.com/111.pdf
Connecting to amazon.com (amazon.com)|00.00.55.888|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2680728 (2.6M) [application/pdf]
Saving to: `111.pdf'


100%[==================================================>] 2,680,728   10.1K/s   in 4m 22s


2013-04-09 11:35:11 (10.0 KB/s) - `111.pdf' saved [2680728/2680728]

Интересно, почему я не могу открыть файл pdf 111.pdf? Приведенный выше отчет говорит, что он загружен на 100%. Это из-за сброса соединения пэром?

Интересно, можно ли поместить wget в цикл для каждого файла таким образом, чтобы он не выходил из цикла, пока загрузка не будет завершена без ошибок? Я нашел следующий цикл, однако он выдает ошибку. Код и ошибка показаны ниже:

Код:

while read -r link
do
        wget -A .pdf
        until [ $? = 0 ]
        do
            wget -A .pdf
        done
done < ./list.txt

Ошибка:

Try `wget --help' for more options.
wget: missing URL
Usage: wget [OPTION]... [URL]...

Я использую Cygwin на Windows.

Пожалуйста, дайте мне знать, если у вас есть и другие предложения.

Спасибо за помощь.

1 ответ1

4

Закрытые соединения

Соединение, закрытое одноранговым узлом, обычно означает, что соединение было намеренно закрыто целевой машиной (или любой другой на трассе трассировки).

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

Поврежденный файл

В первой попытке было загружено только 1 045, а в заголовках указано, что длина не указана. Я подозреваю, что первая часть файла на самом деле является своего рода сообщением об ошибке (например, вам нужно подождать X секунд между загрузками).

Возможные решения

  • Поддать пользовательский агент основного браузера:

    --user-agent "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Ubuntu Chromium/25.0.1364.160 Chrome/25.0.1364.160 Safari/537.22"
    
  • Установите разумное или случайное время ожидания между двумя загрузками:

    --wait=15
    --random-wait
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .