@@ -22,17 +22,7 @@
import re
import datetime
from time import gmtime, strftime
from bs4 import BeautifulSoup
import mechanize
import json
import urlparse
from lxml import etree, html
import lxml
import urllib
from lxml.cssselect import CSSSelector
import unicodedata
from unidecode import unidecode
from os import sys


# endpoint
sparql_endpoint_remoto = "http://tweb2015.cs.unibo.it:8080/data"
@@ -245,6 +235,19 @@ def contains_digits(string):
digits = re.compile('\d')
return bool(digits.search(string))

def get_fragment_path(path):
arr = path.split("_")
for i in range(len(arr)):
if not(contains_digits(arr[i])):
arr[i] = arr[i] + "1"
else:
if "h" in arr[i]:
if len(arr[i]) == 2:
arr[i] = arr[i]+"1"
path = "_".join(arr)
path = path.replace("html1_body1_", "")
return path

def main():
"""
print(setIRIautore(" Màrio "))
@@ -255,82 +258,82 @@ def main():
print(setIRIautore("M[a]riò De Rossi Bianc.;h:i Vèrdi Gialli"))
"""

path = "form1_table3_tbody1_tr1_td1_table5_tbody1_tr1_td1_table1_tbody1_tr1_td2_p2"
start = "0"
end = "20"
url = "http://www.dlib.org/dlib/july15/downs/07downs.html"
# (urldoc, path, start, end, tipo, valore):

titolo = "Data Stewardship in the Earth Sciences"
#ann = costruisciAnnotazione(url, path, start, end, "hasTitle", titolo)
#print ann
#query = query_annotazione(nome_grafo_gruppo, ann)
#do_query_post(sparql_endpoint_remoto, query)

#ann = costruisciAnnotazione(url, path, start, end, "hasUrl", url)
#print ann
autore = "Robert R. Downs"
#ann = costruisciAnnotazione(url, path, start, end, "hasAuthor", autore)
#print ann
anno = "2015"
#ann = costruisciAnnotazione(url, path, start, end, "hasPublicationYear", anno)
#print ann
doi = "10.1045/july2015-downs"
#ann = costruisciAnnotazione(url, path, start, end, "hasDoi", doi)
#print ann



reload(sys)
sys.setdefaultencoding("utf-8")

url = "http://rpd.unibo.it/article/view/5355"
pathgenerale = "/html/body/div/div/div[2]/div[3]/"
pathparziale = "div[2]/h3/text()"
titolo = "La valutazione"

"""
#albero nodi metodo 1
br = mechanize.Browser()
response = br.open(url)
dochtml = response.read() # raw html source code
albero = etree.HTML(dochtml)
nodo = albero.xpath(pathgenerale + pathparziale)
nodo = '\n'.join(nodo)
start = nodo.find(titolo)
end = start + len(titolo)
print start
print end
"""
# open url metodo 2
url = "http://rpd.unibo.it/article/view/5355"
pathgenerale = "/html/body/div/div/div[2]/div[3]/"
pathparziale = "div[2]/h3/text()"
path = pathgenerale + pathparziale
albero = lxml.html.parse(url).getroot()
nodo = albero.xpath(pathgenerale + pathparziale) # lista
start = nodo[0].find(titolo) # indice del
if start == -1:
print "qualcosa non va"
end = start + len(titolo)
print path
path = path[11:-7]
path_step_list = path.split("/")
path = ""
for step in path_step_list:
if not contains_digits(step):
step += "[1]"
# h
path += step + "/"
path = path[:-1]
# mpath = '/'.join(path_step_list) not work
path = path.replace("[", "")
path = path.replace("]", "")
path = path.replace("/", "_")
print path
print start
print end

# path = "form1_table3_tbody1_tr1_td1_table5_tbody1_tr1_td1_table1_tbody1_tr1_td2_p2"
# start = "0"
# end = "20"
# url = "http://www.dlib.org/dlib/july15/downs/07downs.html"
# # (urldoc, path, start, end, tipo, valore):
#
# titolo = "Data Stewardship in the Earth Sciences"
# #ann = costruisciAnnotazione(url, path, start, end, "hasTitle", titolo)
# #print ann
# #query = query_annotazione(nome_grafo_gruppo, ann)
# #do_query_post(sparql_endpoint_remoto, query)
#
# #ann = costruisciAnnotazione(url, path, start, end, "hasUrl", url)
# #print ann
# autore = "Robert R. Downs"
# #ann = costruisciAnnotazione(url, path, start, end, "hasAuthor", autore)
# #print ann
# anno = "2015"
# #ann = costruisciAnnotazione(url, path, start, end, "hasPublicationYear", anno)
# #print ann
# doi = "10.1045/july2015-downs"
# #ann = costruisciAnnotazione(url, path, start, end, "hasDoi", doi)
# #print ann
#
#
#
# reload(sys)
# sys.setdefaultencoding("utf-8")
#
# url = "http://rpd.unibo.it/article/view/5355"
# pathgenerale = "/html/body/div/div/div[2]/div[3]/"
# pathparziale = "div[2]/h3/text()"
# titolo = "La valutazione"
#
# """
# #albero nodi metodo 1
# br = mechanize.Browser()
# response = br.open(url)
# dochtml = response.read() # raw html source code
# albero = etree.HTML(dochtml)
# nodo = albero.xpath(pathgenerale + pathparziale)
# nodo = '\n'.join(nodo)
# start = nodo.find(titolo)
# end = start + len(titolo)
# print start
# print end
# """
# # open url metodo 2
# url = "http://rpd.unibo.it/article/view/5355"
# pathgenerale = "/html/body/div/div/div[2]/div[3]/"
# pathparziale = "div[2]/h3/text()"
# path = pathgenerale + pathparziale
# albero = lxml.html.parse(url).getroot()
# nodo = albero.xpath(pathgenerale + pathparziale) # lista
# start = nodo[0].find(titolo) # indice del
# if start == -1:
# print "qualcosa non va"
# end = start + len(titolo)
# print path
# path = path[11:-7]
# path_step_list = path.split("/")
# path = ""
# for step in path_step_list:
# if not contains_digits(step):
# step += "[1]"
# # h
# path += step + "/"
# path = path[:-1]
# # mpath = '/'.join(path_step_list) not work
# path = path.replace("[", "")
# path = path.replace("]", "")
# path = path.replace("/", "_")
# print path
# print start
# print end
print get_fragment_path('html1_body1_div1_div3_div2_div3_div2_h3')

if __name__ == "__main__":
print "this script (contactSparqlEndpoint) is being run directly from %s" % __name__
@@ -173,7 +173,7 @@ def scraping_documenti():

#print json.dumps(lista_docs)

return json.dumps(lista_docs)
return lista_docs


if __name__ == "__main__":
@@ -77,18 +77,31 @@ def return_auto_titolo():
return data


@app.route('/scrapingTitolo') #prende il titolo dei docuemnti quando vengono caricati
@app.route('/getDocumenti') #prende il titolo dei documenti quando vengono caricati
def return_titolo():
url = request.args.get('url')
item_list = json.loads(url)
#url = request.args.get('url')
#item_list = json.loads(url)
item_list = []
read_file = open('cacheDoc.json', 'r')
result = read_file.read()
read_file.close()
if (result):
data = result
else:
docFromScraping = scraping_documenti();
query = "PREFIX fabio: <http://purl.org/spar/fabio/> SELECT DISTINCT ?doc WHERE { ?doc a fabio:Item . FILTER NOT EXISTS { ?doc a fabio:Item . FILTER regex(str(?doc), 'cited')} FILTER NOT EXISTS { ?doc a fabio:Item . FILTER regex(str(?doc), 'Reference')} FILTER NOT EXISTS { ?doc a fabio:Item . FILTER regex(str(?doc), '_ver')}}";
docFromSPARQL = do_query_get(sparql_endpoint_remoto, query)

for d in docFromScraping:
item_list.append(d['url'])

for doc in docFromSPARQL['results']['bindings']:
if doc['doc']['value'] in item_list:
continue
else:
item_list.append(doc['doc']['value'])

data = scraping_titolo(item_list)
print "scraping completato"
out_file = open('cacheDoc.json', 'w')
out_file.write(data)
out_file.close()
@@ -83,8 +83,8 @@ function get_annotazioni(query, urlDoc){
} else {
$('#alertMessage').text("Non ci sono annotazioni per il documento selezionato.");
$('#alertDoc').modal('show');
scraper(urlDoc)
};
//scraper(lista_annotazioni,urlDoc);
},
//there is no error handling for JSONP request
//workaround: jQuery ajax Timeout
@@ -102,158 +102,17 @@ function get_annotazioni(query, urlDoc){
};


function scraper(anns,urlDoc){
alert('ciao2...'+urlDoc);
$findTitle = false;
$findAuthor = false;
$findDoi = false;
$findYears = false;
$findCitazioni = false;

for (i = 0; i < anns.length; i++) {
ann = anns[i];
// alert('ann='+ann);
ann_out = displaySingolaAnnotazione("",ann);
if(typeof(ann["type"]) !== "undefined"){
tipo_ann = gestioneTipoType(ann["type"]["value"]);
//console.log("tipo ann="+ann["type"]["value"]);

if(ann["type"]["value"]=="hasTitle"){
if(typeof(ann["prov_nome"]) !== "undefined"){
if(ann["prov_nome"]["value"] == "Heisenbergg"){
console.log("annot titolo="+ann_out);
$findTitle = true;
}
}
}
if(ann["type"]["value"]== "hasAuthor"){
if(typeof(ann["prov_nome"]) !== "undefined"){
if(ann["prov_nome"]["value"] == "Heisenbergg"){
console.log("annot autore="+ann_out);
$findAuthor = true;
}
}
}
if(ann["type"]["value"]== "hasDOI"){
if(typeof(ann["prov_nome"]) !== "undefined"){
if(ann["prov_nome"]["value"] == "Heisenbergg"){
console.log("annotazione doi="+ann_out);
$findDoi = true;
}
}
}
if(ann["type"]["value"]== "hasPublicationYear"){
if(typeof(ann["prov_nome"]) !== "undefined"){
if(ann["prov_nome"]["value"] == "Heisenbergg"){
console.log("annotazione anno="+ann_out);
$findYears = true;
}
}
}

if(ann["type"]["value"]== "cites"){
if(typeof(ann["prov_nome"]) !== "undefined"){
if(ann["prov_nome"]["value"] == "Heisenbergg"){
console.log("annotazione anno="+ann_out);
$findYears = true;
}
}
}
function scraper(urlDoc){
$.ajax({
url: '/scrapingAutomatico',
type: 'GET',
success: function(result){

},
error: function(){

}
}

if($findTitle == false){
console.log($findTitle);
console.log("chiamare scraper titolo");

$.ajax({
url: '/scrapingAutomaticoTitolo',
type: 'GET',
data: {url: urlDoc},
success: function(result) {
alert("scraping titolo="+result);
},
error: function(error) {
alert("Error: " + error);
}
});

}

if($findAuthor == false){
console.log($findTitle);
console.log("chiamare scraper autore");

$.ajax({
url: '/scrapingAutomaticoAutore',
type: 'GET',
data: {url: urlDoc},
success: function(result) {
alert("scraping autore="+result);
},
error: function(error) {
alert("Error: " + error);
}
});

}

if ($findDoi ==false) {
console.log($findDoi);
console.log("chiamare scraper doi");

$.ajax({
url: '/scrapingAutomaticoDoi',
type: 'GET',
data: {url: urlDoc},
success: function(result) {
alert("scraping Doi="+result);
},
error: function(error) {
alert("Error: " + error);
}
});
}

if($findYears == false){
console.log($findYears);
console.log("chiamare scraper anno");

$.ajax({
url: '/scrapingAutomaticoYears',
type: 'GET',
data: {url: urlDoc},
success: function(result) {
alert("scraping anno="+result);
},
error: function(error) {
alert("Error: " + error);
}
});

}

if($findCitazioni == false){
console.log($findCitazioni);
console.log("chiamare scraper citazioni");

$.ajax({
url: '/scrapingCitazioni',
type: 'GET',
data: {url: urlDoc},
success: function(result) {
alert("scraping citazioni="+result);
},
error: function(error) {
alert("Error: " + error);
}
});

}


});
}

// modal
@@ -5,14 +5,14 @@ $(document).ready(function() {
listaGruppiCompleta = [];

//documenti
$.when(getDocFromScraping(), getDocFromSparql()).done(function(r1, r2){
docS = JSON.parse(r1[0]);
docA = r2[0].results.bindings;

getDocumenti(docA, docS);
});


// $.when(getDocFromScraping(), getDocFromSparql()).done(function(r1, r2){
// docS = JSON.parse(r1[0]);
// docA = r2[0].results.bindings;
//
// getDocumenti(docA, docS);
// });

getDocumenti();
//gruppi
getGruppi();

@@ -75,36 +75,31 @@ function getDocFromScraping(){
});
}

function getDocumenti(docAnnotati, docScraping){
docTemp = [];
//function getDocumenti(docAnnotati, docScraping){
function getDocumenti(){
// docTemp = [];
//
// for(i = 0; i < docScraping.length; i++){
// docTemp.push(docScraping[i].url);
// }
//
// for(i = 0; i < docAnnotati.length; i++){
// if(!($.inArray(docAnnotati[i].doc.value, docTemp))){
// docTemp.push(docAnnotati[i].doc.value);
// }
// }
//
// urlDoc = JSON.stringify(docTemp);

for(i = 0; i < docScraping.length; i++){
docTemp.push(docScraping[i].url);
}

for(i = 0; i < docAnnotati.length; i++){
if(!($.inArray(docAnnotati[i].doc.value, docTemp))){
docTemp.push(docAnnotati[i].doc.value);
}
}

urlDoc = JSON.stringify(docTemp);
$.ajax({
url: '/scrapingTitolo',
url:'/getDocumenti',
type: 'GET',
data: {url: urlDoc},
success: function(result){
if ( result.length == 0 ){
$('#alertMessage').text("Nessun documento presente!");
$('#alertDoc').modal('show');
} else {
res = JSON.parse(result);
$('#numDoc').html(res.length);
for(j = 0; j < res.length; j++){
$('div#lista_doc').append('<a class="list-group-item" value="' + res[j].url + '">' + res[j].titolo + '</a><br>');
}
res = JSON.parse(result);
$('#numDoc').html(res.length);
for(j = 0; j < res.length; j++){
$('div#lista_doc').append('<a class="list-group-item" value="' + res[j].url + '">' + res[j].titolo + '</a><br>');
}

},
error: function(){
$('#alertMessage').text("Errore nel caricamento dei documenti!");