Como você instrui o wget a rastrear recursivamente um site e fazer download apenas de certos tipos de imagens?
Eu 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 page1.html contenha centenas de links para subpáginas, que têm links diretos para imagens, o wget relata coisas como "Removendo subpage13.html, uma vez que deve ser rejeitado", e nunca faz download de imagens, pois nenhuma é diretamente ligado a partir da página inicial.
Estou assumindo que isso ocorre porque o my --accept está sendo usado para direcionar o rastreamento e filtrar o conteúdo para download, enquanto eu quero usá-lo apenas para direcionar o download do conteúdo. Como posso fazer o wget rastrear todos os links, mas só baixar arquivos com certas extensões como * .jpeg?
EDIT: Além disso, algumas páginas são dinâmicas e são geradas por meio de um script CGI (por exemplo, img.cgi? fo9s0f989wefw90e). Mesmo se eu adicionar cgi à minha lista de aceitações (por exemplo, --accept = jpg, jpeg, html, cgi), elas sempre serão rejeitadas. Existe uma maneira de contornar isso?
Como você espera saber o conteúdo de subpage13.html (e então o jpg que ele está vinculado) se não for permitido baixá-lo. Eu sugiro que você permita o html, consiga o que você quer, então remova o que você não quer.
Eu não tenho certeza sobre por que o seu cgi está sendo rejeitado ... existe alguma saída de erro por wget? Talvez torne o wget detalhado ( -v
) e veja. Pode ser melhor como uma questão separada.
Dito isto, se você não se importa com largura de banda e baixar lotes, então remova o que você não quer depois, não importa.
Confira também --html-extension
Da página do manual:
-E
--html-extension
If a file of type application/xhtml+xml or text/html is downloaded and the URL does not end with the regexp .[Hh][Tt][Mm][Ll]?, this option will cause the suffix .html to be appended to the local filename. This is useful, for instance, when youâre mirroring a remote site that uses .asp pages, but you want the mirrored pages to be viewable on your stock Apache server. Another good use for this is when youâre downloading CGI-gener- ated materials. A URL like http://site.com/article.cgi?25 will be saved as article.cgi?25.html.
Note that filenames changed in this way will be re-downloaded every time you re-mirror a site, because Wget canât tell that the local X.html file corresponds to remote URL X (since it doesnât yet know that the URL produces output of type text/html or application/xhtml+xml. To prevent this re-downloading, you must use -k and -K so that the original version of the file will be saved as X.orig.
--restrict-file-names=unix
também pode ser útil devido a essas URLs cgi ...
Você também pode usar o MetaProducts Offline Explorer sem programar
Tente adicionar a opção --page-requisites
Tags bash wget linux web-crawler script