Usando o Wget para rastrear recursivamente um site e baixar imagens


13

Como você instrui o wget a rastrear recursivamente um site e fazer o download apenas de certos tipos de imagens?

Tentei usar isso para rastrear um site e baixar apenas imagens JPEG:

wget --no-parent --wait=10 --limit-rate=100K --recursive --accept=jpg,jpeg --no-directories http://somedomain/images/page1.html

No entanto, embora o page1.html contenha centenas de links para subpáginas, que possuem links diretos para imagens, o wget relata coisas como "Removendo a subpage13.html, pois ela deve ser rejeitada" e nunca baixa imagens, pois nenhuma está diretamente vinculada a a partir da página inicial.

Suponho que isso ocorre porque meu --accept está sendo usado para direcionar o rastreamento e o filtro de conteúdo para download, enquanto eu quero que ele seja usado apenas para direcionar o download de conteúdo. Como posso fazer o wget rastrear todos os links, mas baixar apenas arquivos com certas extensões como * .jpeg?

EDIT: Além disso, algumas páginas são dinâmicas e são geradas por um script CGI (por exemplo, img.cgi? Fo9s0f989wefw90e). Mesmo se eu adicionar cgi à minha lista de aceitação (por exemplo, --accept = jpg, jpeg, html, cgi), eles ainda serão sempre rejeitados. Existe uma maneira de contornar isso?

Respostas:


5

Por que você não tenta usar wget -A jpg,jpeg -r http://example.com?


A pergunta afirma que algumas das imagens têm o formato /url/path.cgi?query, portanto, sua sugestão não as buscará.
Charles Stewart

1

Como você espera que o wget conheça o conteúdo da subpágina13.html (e também os jpgs aos quais ele se vincula) se não for permitido fazer o download. Sugiro que você permita html, obtenha o que deseja e remova o que não deseja.


Não sei bem por que seus cgi estão sendo rejeitados ... existe algum erro no wget? Talvez faça wget verbose ( -v) e veja. Pode ser melhor como uma pergunta separada.

Dito isto, se você não se importa com largura de banda e faz o download de lotes, remova o que não deseja depois, não importa.


Também confira --html-extension

Na página do manual:

-E

--html-extension

Se um arquivo do tipo application / xhtml + xml ou text / html for baixado e o URL não terminar com a regexp. [Hh] [Tt] [Mm] [Ll]?], Essa opção fará com que o sufixo .html seja anexado ao nome do arquivo local. Isso é útil, por exemplo, quando você está espelhando um site remoto que usa páginas .asp, mas deseja que as páginas espelhadas sejam visíveis no servidor Apache padrão. Outro bom uso para isso é quando você está baixando materiais gerados em CGI. Um URL como http://site.com/article.cgi?25 será salvo como article.cgi? 25.html.

Observe que os nomes de arquivos alterados dessa maneira serão baixados novamente toda vez que você espelhar um site, porque o Wget não pode dizer que o arquivo X.html local corresponde à URL remota X (já que ainda não sabe que a URL produz saída do tipo text / html ou application / xhtml + xml.Para evitar esse download novamente, você deve usar -k e -K para que a versão original do arquivo seja salva como X.orig.


--restrict-file-names=unix também pode ser útil devido a esses URLs cgi ...


Eu deveria parar de vincular as opções do wget ... estava prestes a apontar, --no-parentmas vou parar por aí.
Caro

0

Você também pode usar o MetaProducts Offline Explorer sem programar


-1

Tente adicionar a --page-requisitesopção


Isso baixa todas as mídias vinculadas. A única maneira de usar o wget para baixar imagens é baixar TODO o conteúdo de uma página ?!
Cerin 29/03
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.