-
-
Save aufi/adca6f96e7e5db9e27a9 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/ruby | |
require 'rubygems' | |
require 'nokogiri' | |
#require 'elasticsearch' | |
class Clanek | |
@@ciselne = ['skore', 'k_datum'] | |
# zbytek atributu je (pro zkraceni) povazovan za text | |
def nastav(nazev, hodnota) | |
if @@ciselne.include?(nazev) # taky jde self.class.ciselne... je to class/tridni/staticka promenna | |
nastav_cislo(nazev, hodnota) | |
else | |
nastav_text(nazev, hodnota) | |
end | |
end | |
private | |
def nastav_cislo(nazev, hodnota) | |
instance_variable_set("@#{nazev}", hodnota.to_s.gsub(/[^0-9]/,'')) | |
end | |
def nastav_text(nazev, hodnota) | |
instance_variable_set("@#{nazev}", hodnota.to_s.delete(' ').strip) | |
end | |
=begin | |
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 | |
=end | |
def export_to_json | |
instance_variables.to_json | |
end | |
# def () | |
# @ = | |
# end | |
end | |
page = Nokogiri::HTML(open("2015-10-22_IT.htm")) | |
#odstrani vsechny span značky, ale nechá jejich obsah | |
page.css("span.highlighted").each do |span| | |
span = span.replace(" #{span.content}") | |
end | |
#pole, ve kterem jsou vsechny objekty | |
clanky = [] | |
chtene_atributy_doc = ['Skóre', 'K_datum', 'K_nazev', 'K_rubrika', 'K_puvod', | |
'K_autor', 'K_zdroj'] | |
page.css('.documentContentDiv').each do |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 do |y| | |
vrchniMeta = y.text.split(":",2) | |
#nazev = "\nK_" + vrchniMeta[0].tr('ó', 'o') | |
nazev = vrchniMeta[0].gsub("\n", '') | |
hodnota = vrchniMeta[1] | |
if chtene_atributy_doc.include?(nazev) | |
clanek.nastav(nazev.tr('ó', 'o').downcase, hodnota) | |
else | |
raise "Neznámý typ!! Vyvolávám chybu\n#{nazev}" | |
end | |
=begin | |
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 | |
=end | |
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 do |c| | |
data = c.text.split("Text:",2) | |
#metadata v čánku | |
c.search("text()").map do |g| | |
next if g.text == "\n" | |
break if g.text == "Text: " | |
spodniMeta = g.text.split(":",2) | |
chtene_atributy_text = ["Autor", "Číslo", "Datum", "Domicil", "Hash", "Identifikace", | |
"ISSN", "Jazyk", "Název", "Oblast", "Odkaz", "Rubrika", "Shortcut", "ShortcutArea", | |
"ShortcutGroup", "Text", "Zdroj", "Zpracováno"] | |
if chtene_atributy_text.include?(spodniMeta[0]) | |
clanek.nastav(spodniMeta[0].tr('óČá', 'oCa').downcase, spodniMeta[1]) | |
else | |
raise "Neznámý typ!! Vyvolávám chybu\n#{spodniMeta[0]}" | |
end | |
=begin | |
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 | |
=end | |
end | |
#Samotný text článku | |
text = data[1].gsub!("\n", " ") | |
clanek.text(text) | |
end | |
clanky << clanek | |
end | |
p clanky |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment