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 .