Как использовать wget для загрузки всех URL, соответствующих шаблону - PullRequest
0 голосов
/ 17 апреля 2019

Скажем, у меня есть такой веб-сайт:

https://mywebsite.com/dir1/id-1
https://mywebsite.com/dir1/id-2
https://mywebsite.com/dir1/id-3
https://mywebsite.com/dir2/foo-id-1
https://mywebsite.com/dir2/foo-id-2
https://mywebsite.com/dir2/foo-id-3
https://mywebsite.com/dir3/list-1
https://mywebsite.com/dir3/list-2
https://mywebsite.com/dir3/list-...
https://mywebsite.com/dir3/list-n
https://mywebsite.com/dir4/another-list-type-1
https://mywebsite.com/dir4/another-list-type-2
https://mywebsite.com/dir4/another-list-type-...
https://mywebsite.com/dir4/another-list-type-n
https://mywebsite.com/random-other-directories-i-dont-care-about...

Я хотел бы загрузить все страницы /dir1/:id и /dir2/foo-:id, но хотел бы перейти по ссылкам со всех страниц в /dir1 до /dir4, где некоторые из этих каталогов - это, например, списки ссылок на /dir/:id.

Интересно, как я это делаю.В идеале было бы максимально загружать все :id ссылки сначала , а не зацикливаться на загрузке тысяч или миллионов страниц списка сначала.

Хотите знать, как это сделать.Это не просто «зеркало сайта».В большинстве случаев, когда я пробовал это сделать, wget слишком поглощен ссылками, которые меня не интересуют.Я хочу, чтобы он максимизировал загрузку /dir1/:id и /dir2/foo-:id, а также собирал ссылки, найденные на других страницах, с которыми он сталкивался.В принципе, какой-то способ расставить приоритеты.

1 Ответ

1 голос
/ 18 апреля 2019

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

К сожалению, это невозможно только в Wget. Тем не менее, с небольшим количеством сценариев bash, вы можете быть достаточно близко. Есть два простых подхода, о которых я могу подумать:

  1. Дайте Wget сначала ссылку на /dir1/ и /dir2/, и пусть она рекурсивно скачивает это. Как только это будет сделано, вызовите wget с mywebsite.com/, чтобы загрузить остальные файлы. Это будет тратить несколько секунд на отправку HEAD запросов на все файлы, которые вы уже скачали, но это все.

  2. Это похоже на (1) выше. Кроме того, вы вызываете wget с `` --accept-regex` для каждого из каталогов, заставляя их загружаться один за другим

...