1

У меня есть ссылка, которая включает в себя 12 файлов, и я хочу скачать все из них, используя только одну команду в Wget . И я использую Cygwin в качестве терминала для запуска Wget .

Ссылка https://hydro1.gesdisc.eosdis.nasa.gov/data/NLDAS/NLDAS_FORA0125_M.002/1985/, и я хочу, чтобы все файлы .grb по этой ссылке. Я устал от следующего кода, но он просто загружает все .xml файлы.

Я нахожу некоторые советы из https://disc.sci.gsfc.nasa.gov/recipes/?q=recipes/How-to-Download-Data-Files-from-HTTP-Service-with-wget , но я все еще не могу решать проблему. Спасибо за любую помощь.

wget --load-cookies ~/.urs_cookies --save-cookies ~/.urs_cookies --keep-session-cookies -r -c -nH -nd -np -A nc4,xml "https://hydro1.gesdisc.eosdis.nasa.gov/data/NLDAS/NLDAS_FORA0125_M.002/1985/"

Благодаря всей помощи, я исправил это, но тогда дело доходит до более сложного вопроса. Это требует имени пользователя и пароля, что должно быть, но я не знаю, как Create a .netrc file и Create a cookie file как рекомендовано https://disc.sci.gsfc.nasa.gov/recipes/?q = recipes/How-to-Download-Data-Files-from-HTTP-Service-with-wget.

Вот краткое описание того, что мне нужно сделать.

To run wget, you need to set up .netrc and create a cookie file:
Create a .netrc file in your home directory.
a. cd ~ or cd $HOME
b. touch .netrc
c. echo "machine urs.earthdata.nasa.gov login <uid> password <password>" >> .netrc
     where <uid> is your user name and <password> is your URS password
d. chmod 0600 .netrc (so only you can access it)

Create a cookie file. This file will be used to persist sessions across calls to Wget or Curl. For example:
a. cd ~ or cd $HOME
b. touch .urs_cookies

Интересно, как я могу сделать это в Wget от Cygwin для Windows.

2 ответа2

1

Только глядя на ваш пример, он показывает -A nc4,xml который объясняет только загрузку .xml файлов, по этой ссылке не должно быть никаких файлов nc4.

Как бы то ни было, вот что man wget говорит о -A:

Recursive Accept/Reject Options
   -A acclist --accept acclist
   -R rejlist --reject rejlist
       Specify comma-separated lists of file name suffixes or patterns
       to accept or reject. Note that if any of the wildcard
       characters, *, ?, [ or ], appear in an element of acclist or
       rejlist, it will be treated as a pattern, rather than a suffix.
       In this case, you have to enclose the pattern into quotes to
       prevent your shell from expanding it, like in -A "*.mp3" or -A
       '*.mp3'.

Так что только для файлов grb, попробуйте использовать -A grb как в:

wget --load-cookies ~/.urs_cookies --save-cookies ~/.urs_cookies --keep-session-cookies -r -c -nH -nd -np -A nc4,xml "https://hydro1.gesdisc.eosdis.nasa.gov/data/NLDAS/NLDAS_FORA0125_M.002/1985/"

После правок:

Имя пользователя и пароль должны быть достаточно простыми, попробуйте добавить их:

   --user=user
   --password=password
       Specify the username user and password password for both FTP
       and HTTP file retrieval.  These parameters can be overridden
       using the --ftp-user and --ftp-password options for FTP
       connections and the --http-user and --http-password options for
       HTTP connections.

снова от man wget . И прочитайте о --save-cookies file и `` --read-cookies`` там, может быть сложно получить куки, сохраненные из веб-браузера, если они не работают в wget.

1

Легко. Вам не хватает варианта

wget --load-cookies ~/.urs_cookies --save-cookies ~/.urs_cookies --keep-session-cookies -r -c -nH -nd -np -R html,xml -A grb "https://hydro1.gesdisc.eosdis.nasa.gov/data/NLDAS/NLDAS_FORA0125_M.002/1985/"

-R отклонить все файлы html и xml и -A принять только файлы grb

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