shell-script-pt
[Top][All Lists]
Advanced

[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]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]