Como baixar todos os arquivos (mas não HTML) de um site usando o wget?

162

Como usar wgete obter todos os arquivos do site?

Preciso de todos os arquivos, exceto os arquivos da página da Web, como HTML, PHP, ASP, etc.

Aniruddhsinh
fonte
Mesmo se você quiser baixar o php, não é possível usar o wget. Podemos obter apenas HTML bruto usando o wget. Eu acho que você sabe o motivo
Venkateshwaran Selvaraj
Nota: sempre verifique wget --spiderprimeiro e sempre adicione -w 1(ou mais -w 5) para não inundar o servidor da outra pessoa.
Isomorphismes
1
Como eu poderia baixar todos os arquivos pdf nesta página? pualib.com/collection/pua-titles-a.html
Stack Overflow é um site para perguntas sobre programação e desenvolvimento. Esta questão parece estar fora de tópico, porque não se trata de programação ou desenvolvimento. Consulte Quais tópicos posso perguntar aqui na Central de Ajuda. Talvez o Superusuário ou o Unix e Linux Stack Exchange sejam um lugar melhor para perguntar. Consulte também Onde postar perguntas sobre Dev Ops?
JWW

Respostas:

262

Para filtrar extensões de arquivo específicas:

wget -A pdf,jpg -m -p -E -k -K -np http://site/path/

Ou, se você preferir nomes de opções longos:

wget --accept pdf,jpg --mirror --page-requisites --adjust-extension --convert-links --backup-converted --no-parent http://site/path/

Isso espelhará o site, mas os arquivos sem jpgou pdfextensão serão removidos automaticamente.

Zsolt Botykai
fonte
17
Se você quiser apenas fazer o download de arquivos sem a arquitetura de diretórios inteiros, use a opção -nd .
Diabloneo 28/08/14
4
o que cada uma das bandeiras significa?
21414 Jürgen Paul
Eu acho que --accepté case-sensitive, então você teria que fazer--accept pdf,jpg,PDF,JPG
Flimm
8
não tenho certeza se isso é com uma nova versão do wgetmas você tem que especificar um --progresstipo, por exemplo--progress=dot
Jamis
@Limlim, você também pode usar a --ignore-caseflag para fazer distinção entre --acceptmaiúsculas e minúsculas.
Harsh
84

Isso baixou o site inteiro para mim:

wget --no-clobber --convert-links --random-wait -r -p -E -e robots=off -U mozilla http://site/path/
izilotti
fonte
20
+1 para -e robots=off! Isso finalmente resolveu o meu problema! :) Obrigado
NHDaly
12
A --random-waitopção é genial;)
poitroae
2
@izilotti O proprietário do site pode descobrir se você WGET os arquivos do site com esse método?
precisa saber é o seguinte
1
@whatIsperfect É definitivamente possível.
Jack
1
@JackNicholsonn Como o proprietário do site saberá? O agente usado foi o Mozilla, o que significa que todos os cabeçalhos serão acessados ​​como um navegador Mozilla, não seria possível detectar o wget como usado? Por favor, corrija se eu estiver errado. obrigado
KhoPhi
63
wget -m -p -E -k -K -np http://site/path/

A página de manual mostrará o que essas opções fazem.

wgetsó seguirá os links, se não houver um link para um arquivo da página de índice, wgetnão saberá sobre sua existência e, portanto, não fará o download. ie ajuda se todos os arquivos estiverem vinculados em páginas da web ou em índices de diretório.

Jesse
fonte
Obrigado pela resposta :) Ele copia site inteiro e eu preciso apenas arquivos (ou seja, txt, pdf, imagem etc.) no website
Aniruddhsinh
25

Eu estava tentando baixar arquivos zip vinculados da página de temas do Omeka - tarefa bastante semelhante. Isso funcionou para mim:

wget -A zip -r -l 1 -nd http://omeka.org/add-ons/themes/
  • -A: aceita apenas arquivos zip
  • -r: recurso
  • -l 1: um nível de profundidade (ou seja, apenas arquivos diretamente vinculados a partir desta página)
  • -nd: não crie uma estrutura de diretórios, basta baixar todos os arquivos nesse diretório.

Todas as respostas com -k, -K, -Eetc opções provavelmente não têm realmente entendido a pergunta, como aqueles que para reescrever páginas HTML para fazer uma estrutura local, renomear .phparquivos e assim por diante. Não é relevante.

Para obter literalmente todos os arquivos, exceto .html etc:

wget -R html,htm,php,asp,jsp,js,py,css -r -l 1 -nd http://yoursite.com
Steve Bennett
fonte
2
-Afaz -A zip,ZIP
distinção entre
7

Você pode tentar:

wget --user-agent=Mozilla --content-disposition --mirror --convert-links -E -K -p http://example.com/

Além disso, você pode adicionar:

-A pdf,ps,djvu,tex,doc,docx,xls,xlsx,gz,ppt,mp4,avi,zip,rar

para aceitar extensões específicas ou para rejeitar apenas extensões específicas:

-R html,htm,asp,php

ou excluir as áreas específicas:

-X "search*,forum*"

Se os arquivos forem ignorados para robôs (por exemplo, mecanismos de pesquisa), você deverá adicionar também: -e robots=off

kenorb
fonte
5

Tente isso. Sempre funciona para mim

wget --mirror -p --convert-links -P ./LOCAL-DIR WEBSITE-URL
Suneel Kumar
fonte
5
wget -m -A * -pk -e robots=off www.mysite.com/

isso fará o download de todos os tipos de arquivos localmente e apontará para eles a partir do arquivo html e ignorará o arquivo de robôs

Abdalla Mohamed Aly Ibrahim
fonte
2

Nos sistemas Windows, para obter o wget, você pode

  1. download grátis Cygwin
  2. download GnuWin32
ebinx
fonte