Usando curl
para buscar, lynx
para análise e awk
para extrair
Por favor, não analise XML / HTML com sed
, grep
, etc. O HTML é livre de contexto, mas sed
e amigos são apenas regulares. 1
url='https://usa.visa.com/support/consumer/travel-support/exchange-rate-calculator.html/?fromCurr=USD&toCurr=EUR&fee=0&exchangedate=02/05/2017'
user_agent= 'Mozilla/5.0 (X11; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0'
curl -sA "${user_agent}" "${url}" \
| lynx -stdin -dump \
| awk '/1 EUR/{ print $4 }'
Você precisa de algum tipo de analisador de HTML para extrair conteúdo com segurança. Aqui, eu uso o lynx
(um navegador da Web baseado em texto), mas existem alternativas mais leves.
Aqui, curl
recupera a página, então lynx
analisa e copia uma representação textual . O /1 EUR/
faz com que awk
procure pela string 1 EUR
, encontrando apenas a linha:
1 EUR = 1.079992 USD
Então, { print $4 }
faz com que imprima a quarta coluna, 1.079992
.
Solução alternativa sem curl
Como meu analisador de HTML escolhido é lynx
, curl
não é necessário:
url='https://usa.visa.com/support/consumer/travel-support/exchange-rate-calculator.html/?fromCurr=USD&toCurr=EUR&fee=0&exchangedate=02/05/2017'
user_agent= 'Mozilla/5.0 (X11; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0'
lynx -useragent="${user_agent}" -dump "${url}" \
| awk '/1 EUR/{ print $4 }'
1 Um pcre
( grep -P
em algumas implementações) pode descrever alguns conjuntos de strings livres de contexto ou mesmo sensíveis ao contexto, mas nem todos eles. / p>
Editado 2017-12-23 para adicionar uma string user-agent (fingindo ser o Firefox), pois o site atualmente bloqueia curl
e lynx
.