Skip to content

Instantly share code, notes, and snippets.

@rexcze-zz
Created November 18, 2015 18:52
Show Gist options
  • Save rexcze-zz/66ebdbf28a03c057192f to your computer and use it in GitHub Desktop.
Save rexcze-zz/66ebdbf28a03c057192f to your computer and use it in GitHub Desktop.
#!/usr/bin/ruby
require 'rubygems'
require 'nokogiri'
#require 'elasticsearch'
class Clanek
def initialize()
end
def k_skore(k_skore)
@k_skore = k_skore.gsub(/[^0-9]/,'')
end
def k_datum(k_datum)
@k_datum = k_datum.gsub(/[^0-9]/,'')
end
def k_nazev(k_nazev)
@k_nazev = k_nazev.delete(' ').strip
end
def k_rubrika(k_rubrika)
@k_rubrika = k_rubrika.delete(' ').strip
end
def k_puvod(k_puvod)
@k_puvod = k_puvod.delete(' ').strip
end
def k_autor(k_autor)
@k_autor = k_autor.delete(' ').strip
end
def k_zdroj(k_zdroj)
@k_zdroj = k_zdroj.delete(' ').strip
end
def autor(autor)
@autor = autor.delete(' ').strip
end
def cislo(cislo)
@cislo = cislo.delete(' ').strip
end
def datum(datum)
@datum = datum.delete(' ').strip
end
def domicil(domicil)
@domicil = domicil.delete(' ').strip
end
def hash(hash)
@hash = hash.delete(' ').strip
end
def identifikace(identifikace)
@identifikace = identifikace.delete(' ').strip
end
def issn(issn)
@issn = issn.delete(' ').strip
end
def jazyk(jazyk)
@jazyk = jazyk.delete(' ').strip
end
def nazev(nazev)
@nazev = nazev.delete(' ').strip
end
def oblast(oblast)
@oblast = oblast.delete(' ').strip
end
def odkaz(odkaz)
@odkaz = odkaz.delete(' ').strip
end
def rubrika(rubrika)
@rubrika = rubrika.delete(' ').strip
end
def shortcut(shortcut)
@shortcut = shortcut.delete(' ').strip
end
def shortcutarea(shortcutarea)
@shortcutarea = shortcutarea.delete(' ').strip
end
def shortcutgroup(shortcutgroup)
@shortcutgroup = shortcutgroup.delete(' ').strip
end
def text(text)
#@text = text.delete(' ').strip
end
def zdroj(zdroj)
@zdroj = zdroj.delete(' ').strip
end
def zpracovano(zpracovano)
@zpracovano = zpracovano.delete(' ').strip
end
def exporttojson(index)
end
# def ()
# @ =
# end
end
page1 = Nokogiri::HTML(open("2015-10-22_IT.htm"))
#odstrani vsechny span značky, ale nechá jejich obsah
page1.css("span.highlighted").each do |span|
span.replace " #{span.content}"
end
#kvuli nejake chybe znovunacitam html soubor, ale jako promennou
page = Nokogiri::HTML(page1.to_xml)
#pole, ve kterem jsou vsechny objekty
clanky = Array.new
page.css('.documentContentDiv').each {|x|
#objekt, ve kterem je cely clanek
clanek = Clanek.new
#Rozpozna a zpracuje metadata z každého článku
#K_datum, K_nazev, K_rubrika, K_puvod, K_autor, K_zdroj
x.css('.verticalField').each {|y|
vrchniMeta = y.text.split(":",2)
case vrchniMeta[0]
when "\nSkóre"
clanek.k_skore(vrchniMeta[1])
when "\nK_datum"
clanek.k_datum(vrchniMeta[1])
when "\nK_nazev"
clanek.k_nazev(vrchniMeta[1])
when "\nK_rubrika"
clanek.k_rubrika(vrchniMeta[1])
when "\nK_puvod"
clanek.k_puvod(vrchniMeta[1])
when "\nK_autor"
clanek.k_autor(vrchniMeta[1])
when "\nK_zdroj"
clanek.k_zdroj(vrchniMeta[1])
else
p "Neznámý typ!! Vyvolávám chybu"
p vrchniMeta[0]
exit
end
}
#Rozpozna s zpracuje text clanku a take vlozena metadata
#text = obsahuje samotny text clanku
#Rozpoznana metadata: Zdroj, Datum, Název, Číslo, Rubrika, Jazyk, Domicil, Odkaz, Oblast, Zpracováno, Identifikace, Hash, ShortcutGroup, ShortcutArea, Shortcut, Text
x.css('.documentText').each {|c|
data = c.text.split("Text:",2)
#metadata v čánku
c.search("text()").map{ |g|
next if g.text == "\n"
break if g.text == "Text: "
spodniMeta = g.text.split(":",2)
case spodniMeta[0]
when "Autor"
clanek.autor(spodniMeta[1])
when "Číslo"
clanek.cislo(spodniMeta[1])
when "Datum"
clanek.datum(spodniMeta[1])
when "Domicil"
clanek.domicil(spodniMeta[1])
when "Hash"
clanek.hash(spodniMeta[1])
when "Identifikace"
clanek.identifikace(spodniMeta[1])
when "ISSN"
clanek.issn(spodniMeta[1])
when "Jazyk"
clanek.jazyk(spodniMeta[1])
when "Název"
clanek.nazev(spodniMeta[1])
when "Oblast"
clanek.oblast(spodniMeta[1])
when "Odkaz"
clanek.odkaz(spodniMeta[1])
when "Rubrika"
clanek.rubrika(spodniMeta[1])
when "Shortcut"
clanek.shortcut(spodniMeta[1])
when "ShortcutArea"
clanek.shortcutarea(spodniMeta[1])
when "ShortcutGroup"
clanek.shortcutgroup(spodniMeta[1])
when "Text"
clanek.text(spodniMeta[1])
when "Zdroj"
clanek.zdroj(spodniMeta[1])
when "Zpracováno"
clanek.zpracovano(spodniMeta[1])
else
p "Neznámý typ!! Vyvolávám chybu"
p spodniMeta[0]
exit
end
}
#Samotný text článku
text = data[1].gsub!("\n", " ")
clanek.text(text)
}
clanky << clanek
}
p clanky
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment