selecionar um trecho do código html com curl ou wget [RESOLVIDO]

1. selecionar um trecho do código html com curl ou wget [RESOLVIDO]

Carlos Corrêa
lyonsbr

(usa Ubuntu)

Enviado em 31/08/2011 - 15:54h

Salve Galera !

Estou fazendo um shell script, que ira acionar um determinado site com um parametro, e o resultado desse acesso, tenho que pegar apenas um trecho que está dentro de um <pre id="xxx">conteudo que eu tenho que armazenar no banco</pre>

PAGE=$(curl --url "https://url.com.br/?parametro=$dni")

PAGE=$(echo "$PAGE" | grep e-mail)

Com esse comando acima eu consigo selecionar alguns dados que preciso, mais o que eu realmente gostaria é de pegar todo o <pre> ... Alguém tem alguma dica?





  


2. MELHOR RESPOSTA

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 01/09/2011 - 00:12h

Então, este script vai te mostrar tudo que está após o "<pre" e antes do "</pr".
Na variável FILE1 vc insere o nome do seu arquivo html. Validei aqui, ta na mosca!


#!/bin/bash

i=0
FILE1="file1.txt"
FILE2="file2.txt"

cat $FILE1 | while read line
do

let i++
v1=`echo $line | cut -c1-4`

if [ "$v1" == "<pre" ] || [ "$v1" == "</pr" ]; then

echo $i >> $FILE2

fi

done

n1=`head -n1 $FILE2`
n2=`tail -n1 $FILE2`
sed -e "$n1,$n2 !d" $FILE1 | grep -v ^\<
rm $FILE2



3. Re: selecionar um trecho do código html com curl ou wget [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 31/08/2011 - 18:24h

Copia um exemplo destas linhas pra gnt trabalhar com elas


4. Re: selecionar um trecho do código html com curl ou wget [RESOLVIDO]

Carlos Corrêa
lyonsbr

(usa Ubuntu)

Enviado em 31/08/2011 - 21:33h

O html é mais ou menos isso ...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>SisInfo</title>
</head>
<body>
<div class="data-user">
<pre id="user_67162381">
Nome.....: Fulano de Tal
E-mail...: teste@teste.com.br
NDoc.....: 123.456.789-12
</pre>
</div>
</body>
</html>

Preciso separar esse conteudo aqui em uma variável, estou tentando fazer alguma expressão regular para isso, mais ta dificil.

Nome.....: Fulano de Tal
E-mail...: teste@teste.com.br
NDoc.....: 123.456.789-12

O "grep" é a melhor solução para isso ? ou tem outro similar que facilitaria ...

Eu retirei alguams partes do html pra não ficar muito longo o post.

Muito Obrigado !


5. Re: selecionar um trecho do código html com curl ou wget [RESOLVIDO]

Marcos Paulo Ferreira
daemonio

(usa Slackware)

Enviado em 31/08/2011 - 22:10h

Nesse caso eu usaria o sed:

#!/bin/sed -nf
/<div class="data-user">/ {
n;
n;
# Se sao ~sempre~ tres dados entao
# podemos usar dois N's.
N;N
# Mostra os dados.
p
# Sai do sed.
q
}

$ ./script.sed arquivo.html
Nome.....: Fulano de Tal
E-mail...: teste@teste.com.br
NDoc.....: 123.456.789-12


Espero ter ajudado.
t+



6. Re: selecionar um trecho do código html com curl ou wget [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 31/08/2011 - 22:12h

Usando os poderes de Aurélio Marinho Jargas, peguei a seguinte expressão:

cat seu_arquivo.html | sed 's/<[^>]*>//g'

Assim ele vai trocar as tags do arquivo por nada :-), restando apenas o texto.

NO seu caso, baseando-se no fato do arquivo só conter o que você postou, sobra apenas isso:

SisInfo




Nome.....: Fulano de Tal
E-mail...: teste@teste.com.br
NDoc.....: 123.456.789-12


Abraços


7. Re: selecionar um trecho do código html com curl ou wget [RESOLVIDO]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 01/09/2011 - 07:11h

Olá @alexandregms , testei a sua solução e retorna erro.
====================
sed: -e expressão #1, caractere 1: comando desconhecido: `,'
rm: não foi possível remover "file2.txt": Arquivo ou diretório não encontrado
==================

Como eu fiz:

1 - salvei seu script.
2 - salvei o arquivo de exemplo.
3 - chamei seu script assim: ./pegadados_ale.sh exemplo3.txt



8. Re: selecionar um trecho do código html com curl ou wget [RESOLVIDO]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 01/09/2011 - 07:13h

Usando a solução do @rai3mb
[citando]
cat seu_arquivo.html | sed 's/<[^>]*>//g'
[/citando]

retorna:
===========
SisInfo




Nome.....: Fulano de Tal
E-mail...: teste@teste.com.br
NDoc.....: 123.456.789-12
============
ok validado ;)



9. Re: selecionar um trecho do código html com curl ou wget [RESOLVIDO]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 01/09/2011 - 07:19h

Testando solução @daemonio

salvei script como sed_daemonio.sh

Usei assim: ./sed_daemonio.sh exemplo3.txt
retorno:
==============
Nome.....: Fulano de Tal
E-mail...: teste@teste.com.br
NDoc.....: 123.456.789-12
==============
Valido e ok ;)


10. Solução para pegar trecho de código html

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 01/09/2011 - 07:26h

As soluções do @rai3mb e @daemonio funcionaram muito bem.

O código do @rai3mb eu até consegui entender porque pesquisei no livro do Aurélio esta solução rss. Não consegui chegar na solução, mas tentei.
No caso do exemplo enviado pelo @daemonio achei super legal por ser novidade pra mim. Queria entender melhor os passos.

Em um ambiente web para este caso e levando-se em conta estritamente a tag início <pre> e final </pre>, se tiver mais do que 3 linhas ambas continuarão funcionando ?
As duas fazem rigorosamente a mesma coisa ?

Abraços


11. Re: selecionar um trecho do código html com curl ou wget [RESOLVIDO]

Carlos Corrêa
lyonsbr

(usa Ubuntu)

Enviado em 01/09/2011 - 11:07h

agradeço o retorno pessoal !

alexandregms, usei o seu exemplo como base ... ficou + ou menos assim.


PAGE=$(curl --url "https://url.com.br/?parametro=$dni")
echo "$PAGE" | while read line
do
let i++
v=`echo "$line" | cut -c1-4`
if [ "$start" == 1 ] || [ "$v" == "<pre" ]; then
echo "$line" #################################
if [ "$v" == "</pr" ]; then
start=0
else
start=1
fi
fi
done

Isso está imprimindo na tela todas as linhas que eu preciso, estou tentando montar uma unica string com o todas as linhas. Tentei algo como:

out=`echo $out$line`

Mais não deu certo, a linha "echo "$line" #################################" que estou tentando trabalhar para que me apresente o resultado esperado.

Pois no final desse looping, tenho que armazenar isso em um database.

Muito Obrigado pela atenção








12. Re: selecionar um trecho do código html com curl ou wget [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 01/09/2011 - 11:18h

"AprendiNoLinux", aqui nao deu erro nenhum:

[root@server1 test]# cat file1.txt
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>SisInfo</title>
</head>
<body>
<div class="data-user">
<pre id="user_67162381">
Nome.....: Fulano de Tal
E-mail...: teste@teste.com.br
NDoc.....: 123.456.789-12
</pre>
</div>
</body>
</html>

-------------------------------------------

[root@server1 test]# ./script_vol.sh
Nome.....: Fulano de Tal
E-mail...: teste@teste.com.br
NDoc.....: 123.456.789-12

-------------------------------------------

Pelo que vi, vc executou meu script usando o nome do arquivo como parâmetro, mas não fiz desta forma. Usei o arquivo file1.txt de entrada. Lá deve ser copiado o arquivo html.

Quando for assim você pode debugar seu script com "sh -x" ao invés de "./"



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts