module PoliticosBR
Constants
- DEPS_ESTADUAIS
Hash containing the list of URLs to get the lists of state representatives in Brazilian states
- DEPUTADOS_URL
URL to get the spreadesheet with the list of federal representatives
- SENADORES_URL
URL to get the list the senators in Brazilian congress
Public Class Methods
deputados()
click to toggle source
# File lib/politicosbr.rb, line 13 def self.deputados deputados = Array.new source = HTTParty.get(PoliticosBR::DEPUTADOS_URL) tempfile = Tempfile.new('deputados.xls').tap do |f| f.write(source.to_s.force_encoding('UTF-8')) end spreadsheet = Roo::Excel.new(tempfile.path, file_warning: :ignore) (2..spreadsheet.last_row).each do |i| row = spreadsheet.row(i) politico = OpenStruct.new politico.tipo = 'deputado' politico.nome = row[0].upcase politico.partido = row[1] politico.estado = row[2] politico.mandato = '' politico.fones = "(61) #{row[11]} | (61) #{row[12]}" politico.email = row[13] deputados.push(politico) end deputados end
deputados_estaduais(estado)
click to toggle source
# File lib/politicosbr.rb, line 70 def self.deputados_estaduais(estado) method_name = "deputados_estaduais_#{estado}" method(method_name).call end
deputados_estaduais_pr()
click to toggle source
Paraná
# File lib/politicosbr/estaduais.rb, line 6 def self.deputados_estaduais_pr deputados = Array.new url = PoliticosBR::DEPS_ESTADUAIS[:pr] doc = Nokogiri::HTML(open(url)) rows = doc.xpath('//ul/li') rows.each do |row| nome = row.at_xpath('span/a/text()').to_s.strip.upcase if (!nome.empty?) then politico = OpenStruct.new politico.tipo = 'deputado' politico.estado = 'PR' politico.nome = nome politico.url = row.at_xpath('span/a/@href').to_s.strip politico.partido = row.at_xpath('span/text()[normalize-space()]').to_s.strip docdetails = Nokogiri::HTML(open(politico.url)) politico.fones = docdetails.xpath('//div[contains(@class, "redes")]/p[3]/text()[normalize-space()]').to_s.strip politico.email = Rot13.rotate(docdetails.xpath('//div[contains(@class, "redes")]/p[4]/a/text()[normalize-space()]').to_s.strip) deputados.push(politico) end end deputados end
deputados_estaduais_rj()
click to toggle source
Rio de Janeiro
# File lib/politicosbr/estaduais.rb, line 32 def self.deputados_estaduais_rj deputados = Array.new url = PoliticosBR::DEPS_ESTADUAIS[:rj] url_split = url.split('/') base_url = "#{url_split[0]}//#{url_split[2]}" doc = Nokogiri::HTML(open(url)) rows = doc.xpath('//div[contains(@class, "controle_deputado")]') rows.each do |row| politico = OpenStruct.new politico.tipo = 'deputado' politico.estado = 'RJ' politico.nome = row.at_xpath('div[2]/div[2]/a/text()').to_s.strip url_relativa_split = row.at_xpath('div[2]/div[2]/a/@href').to_s.strip.split('/') url_relativa = "/#{url_relativa_split[2]}/#{url_relativa_split[3]}/#{url_relativa_split[4]}" politico.partido = row.at_xpath('div[2]/div/text()').to_s.strip politico.url = "#{base_url}#{url_relativa}" docdetails = Nokogiri::HTML(open(politico.url)) basedocdetails = docdetails.xpath('//div[contains(@class, "descricao")]') politico.fones = basedocdetails.at_xpath('p[3]/text()').to_s.strip politico.email = basedocdetails.xpath('p[4]/text()').to_s.strip deputados.push(politico) end deputados end
deputados_estaduais_rs()
click to toggle source
Rio Grande do Sul
# File lib/politicosbr/estaduais.rb, line 60 def self.deputados_estaduais_rs deputados = Array.new url = PoliticosBR::DEPS_ESTADUAIS[:rs] doc = Nokogiri::HTML(open(url)) rows = doc.xpath('//div[contains(@id, "dnn_ctr657_ModuleContent")]/div') rows.each do |row| politico = OpenStruct.new politico.tipo = 'deputado' politico.estado = 'RS' politico.nome = row.at_xpath('a/text()').to_s.strip.upcase politico.partido = row.at_xpath('span[1]/text()').to_s.strip politico.email = row.at_xpath('span[2]/text()').to_s.strip politico.fones = row.at_xpath('span[3]/text()').to_s.strip deputados.push(politico) end deputados end
deputados_estaduais_sc()
click to toggle source
Santa Catarina
# File lib/politicosbr/estaduais.rb, line 79 def self.deputados_estaduais_sc deputados = Array.new url = PoliticosBR::DEPS_ESTADUAIS[:sc] doc = Nokogiri::HTML(open(url)) rows = doc.xpath('//table/tbody/tr') rows.each do |row| politico = OpenStruct.new politico.tipo = 'deputado' politico.estado = 'SC' politico.nome = row.at_xpath('td[1]/span/a/text()').to_s.strip.upcase politico.partido = row.at_xpath('td[2]/text()').to_s.strip politico.email = row.at_xpath('td[3]/div/ul/li/p/a/text()').to_s.strip politico.fones = row.at_xpath('td[5]/ul/li/p/text()').to_s.strip deputados.push(politico) end deputados end
deputados_estaduais_sp()
click to toggle source
São Paulo
# File lib/politicosbr/estaduais.rb, line 98 def self.deputados_estaduais_sp deputados = Array.new url = PoliticosBR::DEPS_ESTADUAIS[:sp] url_split = url.split('/') base_url = "#{url_split[0]}//#{url_split[2]}" doc = Nokogiri::HTML(open(url)) rows = doc.xpath('//table/tbody/tr') rows.each do |row| politico = OpenStruct.new politico.tipo = 'deputado' politico.estado = 'SP' politico.nome = row.at_xpath('td[1]/a/text()').to_s.strip politico.url = "#{base_url}#{row.at_xpath('td[1]/a/@href').to_s.strip}" politico.partido = row.at_xpath('td[4]/text()').to_s.strip docdetails = Nokogiri::HTML(open(politico.url)) politico.fones = docdetails.xpath('//div[contains(@id, "infoGeral")]/p[12]/text()').to_s.strip politico.email = docdetails.xpath('//div[contains(@id, "infoGeral")]/p[17]/text()').to_s.strip deputados.push(politico) end deputados end
senadores()
click to toggle source
# File lib/politicosbr.rb, line 42 def self.senadores senadores = Array.new doc = Nokogiri::HTML(open(PoliticosBR::SENADORES_URL)) rows = doc.xpath('//table[@id="senadoresemexercicio-tabela-senadores"]/tbody/tr') rows.each do |row| politico = OpenStruct.new politico.tipo = 'senador' politico.nome = row.at_xpath('td[1]/a/text()').to_s.strip.upcase politico.partido = row.at_xpath('td[2]/text()').to_s.strip politico.estado = row.at_xpath('td[3]/text()').to_s.strip politico.mandato = row.at_xpath('td[4]/text()').to_s.strip politico.fones = row.at_xpath('td[5]/text()').to_s.strip politico.email = row.at_xpath('td[6]/text()').to_s.strip senadores.push(politico) end senadores end
todos()
click to toggle source
# File lib/politicosbr.rb, line 64 def self.todos all = deputados all.push(*senadores) all end