[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
ler código fonte html direto para o script
From: |
Helton Moraes |
Subject: |
ler código fonte html direto para o script |
Date: |
Thu, 29 Jul 2010 14:02:00 -0300 |
Olá, Caros Colegas
Estou desenvolvendo uma estratégia meio "malandra" para conseguir baixar
grande quantidade de dados/fotos a partir de sites, que consiste em fazer
parsing do código fonte da página inicial, para obter o endereço das páginas
secundárias e fazer o parsing destas, e assim sucessivamente.
Faço isso porque, dependendo da programação da página, o //wget// ou
similares não conseguem seguir os links (digamos que alguns sites meio que
escondem o conteúdo).
Minha pergunta de shell é a seguinte:
"é possível, com um comando semelhante ao wget, carregar o conteúdo de uma
página html diretamente para um pipe (sed, grep, etc) SEM gravar o arquivo
em disco?"
um script que eu fiz e funcionou deixou um monte de arquivos no disco (tudo
bem, eu poderia ter apagado com um rm *.html no final), mas fico curioso
para saber se existe uma maneira padrão de ler dados diretamente da web sem
precisar gravar nada em disco durante a execução do script.
Obrigado pela ajuda
Helton
script que cheguei a usar (pseudocódigo):
------------------------------------------------------------
wget www.site.com/index.html #baixa o index principal
sed 's/parte.com.(link).html/\1/ g' > listaindex.txt #grava uma lista
dos links encontrados na pagina principal
for n in $(cat listaindex)
do
wget $n #baixa as páginas linkadas
done
egrep -o 'site.*html' *.html | sed -r 's#.*/([a-z_0-9]+?)\.html#\1#' |
sort | uniq > listapages.txt #parsing de todos os links para subpastas
encontrados nas páginas
for page in $(cat listapages)
do
wget http://www.site.com/$page.html #baixa as páginas (código-fonte
com mais links) a partir da lista de páginas gerada pelo parsing
done
for file in $(cat listanomes)
do
test -e $file || \
(mkdir $file;
for f in $(egrep -o $file.*.jpg ./pages/$file.html | cut -d"/" -f2);
#baixa todos os arquivos de interesse (no caso, jpeg)
do
pushd ./$file
wget www.site.com/$page/$file #grava os arquivos em uma estrutura
de diretórios semelhante à do site.
popd
done;)
done
[As partes desta mensagem que não continham texto foram removidas]
- ler código fonte html direto para o script,
Helton Moraes <=