Я хотел бы проанализировать HTML-файл, извлекая соответствующие данные для использования в моих исследованиях. Вот кусок HTML:Как разобрать HTML, используя Nokogiri?
<td class="color_line1" valign="center"><a class="linkpadrao" href="javascript:Direciona('5453*[email protected]');">Serra Talhada</a></td>
<td class="color_line" valign="center" align="center">9</td>
<td class="color_line" valign="center" align="center">2,973</td>
<td class="color_line" valign="center" align="center">0,016</td>
<td class="color_line" valign="center" align="center">2,939</td>
<td class="color_line" valign="center" align="center">3,000</td>
<td class="color_line" valign="center" align="center">0,572</td>
<td class="color_line" valign="center" align="center">2,401</td>
<td class="color_line" valign="center" align="center">0,024</td>
<td class="color_line" valign="center" align="center">2,378</td>
<td class="color_line" valign="center" align="center">2,426</td>
</tr>
Будучи более конкретными, я хотел бы получить «Серру-Тальяд» (как название города), а также все номера, ниже название города (это максимальное , мин и средняя цена на газ).
Я попытался это до сих пор:
require 'rubygems'
require 'mechanize'
require 'nokogiri'
require 'open-uri'
url = "http://www.anp.gov.br/preco/prc/Resumo_Por_Estado_Municipio.asp"
agent = Mechanize.new
parameters = {'selSemana' => '737*De+28%2F07%2F2013+a+03%2F08%2F2013',
'desc_semana' => 'de+28%2F07%2F2013+a+03%2F08%2F2013',
'cod_Semana' => '737',
'tipo' => '1',
'Cod_Combustivel' => 'undefined',
'selEstado' => 'PE*PERNAMBUCO',
'selCombustivel' => '487*Gasolina',
}
municipio = []
page = agent.post(url, parameters)
extrair = page.parser
extrair.css('.linkpadrao').each do |posto|
# Municipios
municipio << posto.text
end
Я не могу понять, как получить номера, поскольку они имеют такую же структуру HTML.
Любые мысли ?!
+1 Смешивание методов DOM и селекторов CSS часто является наиболее читаемым решением. –
Спасибо, @pguardiario. Очень читаемо. – gfm