Нужно извлечь номер из HTML

Учитывая это:

<p>Currencies fluctuate every day. The rate shown is effective for transactions submitted to Visa on <strong>February 5, 2017</strong>, with a bank foreign transaction fee of <st <span><strong>1</strong> Euro = <strong>1.079992</strong> United States Dolla <p>The 'currency calculator' below gives you an indication of the cost of purchas <p>February 5, 2017</p><div class="clear-both"></div> <!-- removed clearboth- <p><strong>1 EUR = 1.079992 USD</strong></p> <div class="clear-both"></di <table width="290" border="0" cellspacing="0" cellpadding="3"> <a href="/content/VISA/US/en_us/home/support/consumer/travel-support/exchange e-calculator.html"> <button class="btn btn-default btn-xs"><span class="retur <p><p>This converter uses a single rate per day with respect to any two currencies. Rates displayed may not precisely reflect actual rate applied to transaction amount due to rounding differences, Rates apply to the date the transaction was processed by Visa; this may differ from the actual date of the transaction. Banks may or may not assess foreign transaction fees on cross-border transactions. Fees are applied at banks' discretion. Please contact your bank for more information.</p>

Мне нужно извлечь 1.079992

Я использую:

 sed -E 's:.*(1\.[0-9\.]+).*:\1:g 

… который работает … но есть ли более элегантный способ?

Альтернативно, есть ли способ получить это значение прямо от curl ?

(Моя полная команда: curl 'https://usa.visa.com/support/consumer/travel-support/exchange-rate-calculator.html/?fromCurr=USD&toCurr=EUR&fee=0&exchangedate=02/05/2017' | grep '<p><strong>1' | sed -E 's:.*(1\.[0-9\\.]+).*:\1:g' )

  • Замена строки1 на строку 2 в строках, содержащих строку3 - со строкой1, имеющей несколько раз
  • удаление на месте строк журнала со старыми отметками времени
  • Найдите (и разделите) общие начальные пробелы из файла / трубы
  • В `sed` как я могу поместить один символ« & »между символами в строке?
  • sed + найти значение перед словом в строке
  • Как удалить количество строк из файла повторно
  • Поиск имени файла в файле
  • Удалите повторяющиеся строки, сохраняя порядок строк
  • 4 Solutions collect form web for “Нужно извлечь номер из HTML”

    Выполните вывод curl на следующую команду grep :

     grep --color -Po '(?<=<strong>1 EUR = )\d+\.\d+(?= USD</strong>)' 

    Другое решение: html2text

     curl -s 'https://usa.visa.com/support/consumer/travel-support/exchange-rate-calculator.html/?fromCurr=USD&toCurr=EUR&fee=0&exchangedate=2/12/2017' \ | html2text \ | grep '1 Euro' \ | awk '{ print $4 }' 

    Sugestion: используйте инструменты xml / html:

    xmllint

     curl "$url" | xmllint -html -xpath '//span/strong[2]/text()' - 

    xidel

     curl "$url" | xidel -s -e "//span/strong[2]" - 

    или даже

     xidel -e "/span/strong[2]" $url 

    Не разбирайте XML / HTML с sed , grep и т. Д. HTML не имеет контекста, но sed и друзья только регулярны. *

     url='https://usa.visa.com/support/consumer/travel-support/exchange-rate-calculator.html/?fromCurr=USD&toCurr=EUR&fee=0&exchangedate=02/05/2017' curl "${url}" \ | lynx -stdin -dump \ | awk '/1 EUR/{ print $4 }' 

    Для этого вам понадобится lynx (текстовый веб-браузер **). Здесь curl извлекает страницу, затем lynx анализирует ее и выгружает текстовое представление . /1 EUR/' causes awk to search for the string 1 EUR`, находя только линию:

      1 EUR = 1.079992 USD 

    Затем { print $4 } выводит четвертый столбец, 1.079992 .


    * pcre ( grep -P в некоторых реализациях) может описывать некоторые контекстно-зависимые или даже контекстно-зависимые stringsets, но не все из них

    ** Вам тогда действительно не нужно curl , так как вы можете дать lynx URL вместо -stdin

    Interesting Posts

    Есть ли какая-либо команда linux для ускорения выполнения файлов?

    Auto indent C ++ 11 лямбда-функций Vim

    scp alias для удаления двоеточий / специальных символов

    Интерпретация результатов tiobench

    Выделение синтаксиса Nano для C # и / или ASP. Сеть

    Передача путей и имен файлов в программу из сценария bash

    rsync терпит неудачу / зависает при копировании из Linux ext4 в FreeBSD ZFS (через SSH)

    Как открыть файл, который является результатом grep?

    Как я могу передать ssh на удаленный сервер с автоматическим паролем и без ключа?

    Каков наилучший инструмент / инструменты для записи видео с веб-камеры на Linux?

    Сериализовать переменную оболочки в bash или zsh

    перезаписать данные раздела ext4 без предварительного удаления

    Попытка сделать арифметику в инструменте переименования Perl (Debian)

    Не удалось установить элементарную установку ОС Grub

    Как добавить / удалить элемент в / из массива в bash?

    Linux и Unix - лучшая ОС в мире.