Depois que eu comecei a usar FeedReaders online (primeiro usei o Bloglines agora migrei para o Google Reader) nunca mais visitei qualquer site para ir atrás de notícias, quer dizer, visitava apenas um: o site da 89 FM.
Sempre pensei em criar um feed para a seção Notas Musicais do site. Só que nunca fui atrás, por pura falta de tempo em procurar por bibliotecas que fizessem o Parsing em HTML, tanto em Python ou PHP.
Depois de conhecer Ruby, pensei em perder um tempinho, procurando alguma biblioteca que fizesse o Parsing HTML, e depois, construir o feed RSS. Fazer o Feed seria a parte mais fácil, graças à biblioteca Builder usada para gerar arquivos XML.
O parsing ficaria à cargo da excelente Hpricot. Porém, encontrei uma outra biblioteca, chamada Feedalizer que usa a Hpricot para criar feeds RSS. Menos trabalho que isso, impossível!
Então, aqui vai o código usada para gerar o feed da página:
#!/usr/bin/env ruby
require "rubygems"
require "feedalizer"
require "time"
rss = File.new("arthurgeek.net/89.xml","w")
feedalize("http://www.89fm.com.br/notas/") do
feed.title = "89 FM Notas"
feed.about = "..."
feed.description = "Notícias do mundo musical da 89FM"
scrape_items("a.formtextobranco") do |rss_item, html_element|
rss_item.link = "http://www.89fm.com.br" + html_element.attributes["href"]
rss_item.date = Time.parse(html_element.to_s)
rss_item.title = html_element.inner_html
rss_item.description = html_element.inner_html
end
output! rss
end
rss.close
O arquivo do feed está disponível aqui e já estou usando-o há mais de 2 meses, e acredito, que não tem mais bugs, e pode agora, ser usado por qualquer um.
Ah, como eu gosto desta linguagem…