def conta_nodi(fileIn, selettore):
    cont=0
    doc = fparse(fileIn)
    node=fparse(fileIn)
    if not selettore.isalnum():
        if len(selettore.split(' '))!=1:
            indice=1
            if selettore.split(' ')[indice]=='>':
                indice=2
            seleinfo=riconosci_info(selettore.split(' ')[indice])
            for node in find_by_tag(doc,selettore[0]):
                parole=node.to_string().split(' ')
                for sez in parole:
                    if seleinfo in sez:
                        cont+=1
        else:   
            seleinfo=riconosci_info(selettore)
            
            parole=doc.to_string().split(' ')
            for sez in parole:
                if seleinfo in sez:
                    cont+=1
    else:        
        for node in find_by_tag(doc,selettore):
            cont+=1
    #print(cont)
    return cont
Exemple #2
0
def conta_nodi(fileIn, selettore):
    '''Torna il numero di nodi dell'albero, che soddisfano il selettore CSS.'''
    file = fparse(fileIn)
    selettore = riconoscimento_selettore(selettore)
    if len(selettore) == 1:
        return ricerca_avo(file, [' ' + selettore[0]])
    return conta(file, selettore)
def conta_nodi(fileIn, selettore):
    '''Torna il numero di nodi dell'albero, che soddisfano il selettore CSS.'''
    htmlfile=fparse(fileIn)
    stringahtml=HTMLNode.to_string(htmlfile)
    contatore=0
    indici=[]
    if '.' in selettore:
        selettore='header '+selettore.strip('.')
    elif '#' in selettore:
        selettore=selettore.strip('#')
    elif '@' in selettore:
        selettore=selettore.strip('@[]')
    elif ' ' in selettore:
        if '<'+selettore[0] in stringahtml:
            if '<'+selettore[2:] in stringahtml:
                if stringahtml.find('<'+selettore[2:])>stringahtml.find('<'+selettore[0]):
                    selettore='<'+selettore[2:]
    elif '>' in selettore:
        if '<'+selettore[0] in stringahtml:
            if '<'+selettore[4:] in stringahtml:
                if stringahtml.find('<'+selettore[4:])>stringahtml.find('<'+selettore[0]):
                    selettore='<'+selettore[4:]
    else:
        selettore='</'+selettore+'>'

    i=stringahtml.find(selettore, contatore)
    while i>=0:
        indici.append(i)
        i=stringahtml.find(selettore, i+1)
    return len(indici)
def conta_nodi(fileIn, selettore):
    '''Torna il numero dei nodi dell'albero che soddisfano il selettore'''
    doc = fparse(fileIn)
    lista = []
    caratteri_sp = ['>', ' ']
    for x in caratteri_sp:
        lista.append(1) if not x in selettore else False
    if len(lista) == 2:
        if selettore[0].isalpha():
            lista_NCS = Find_by_TAG(doc, selettore)
            return len(lista_NCS)
        else:
            lista_NCS = CN_Ricorsiva1(doc, selettore, [])
            return len(lista_NCS)
    else:
        if '>' in selettore:
            lista_selettori = [x.strip() for x in selettore.split('>')]
            if len(lista_selettori) == 2:
                lista_CS = CN_PadreFiglio(doc, selettore, [])
                return len(lista_CS)
            elif len(lista_selettori) > 2:
                lista_SC = CN_Strutture_Complesse_PF(doc, selettore, [])
                return len(lista_SC)
        else:
            lista_selettori = [x.strip() for x in selettore.split()]
            if len(lista_selettori) == 2:
                lista_CS = CN_AvoDiscendente(doc, selettore, [])
                return len(lista_CS)
Exemple #5
0
def cambia_attributo(fileIn, selettore, chiave, valore, fileOut):
    '''Modifica tutti i nodi dell'albero che soddisfano il selettore CSS'''
    #Inserite qui il vostro codice
    pHtml = my_html.fparse(fileIn)
    pHtmlMod = None
    # Modifica i nodi padre figlio
    if '>' in selettore:
        liSel = selettore.split('>')
        pHtmlMod = modificaNodiPF(pHtml, liSel[0].strip(), liSel[1].strip(), chiave, valore)
    # Modifica i nodi evo
    elif ' ' in selettore :
        liSel = selettore.split(' ')
        pHtmlMod = modificaNodiE(pHtml,liSel[0], liSel[1],False, chiave, valore)
    # Modifica gli id or classi or attributi
    else:
        a = None
        if selettore[0] == '@':
            a = selettore.split('=')
            a = a[0][2:]
        dizSel = {'#' : 'id', '.' : 'class', '@' : a}
        idS = selettore[0]
        pHtmlMod =  modificaNodi(pHtml, selettore, chiave, valore, idS, dizSel)
    
    
    f = open(fileOut, 'w')
    f.write(pHtmlMod)
    f.close()
def cambia_attributo(fileIn, selettore, chiave, valore, fileOut):
    selector = selettore.split()
    Nodo = fparse(fileIn)
    #print(Nodo)
    ris =[]
    lis=[]
    ret =[]
    i = 0
    a = splitta2(Nodo,selector,i,ris)
    for i in a:
        #print(i)
        lis.append(i.tag)
        #print(i,ris)
    
    for lista in lis:
        
        a = ric_cambia(Nodo,lista,chiave,valore,ret)
    
    
    testo = ''
    
    testo=Nodo.to_string()
    #print(testo)
    with open(fileOut, 'w',encoding = 'utf-8') as f:
        f.write(testo)
def conta_nodi(fileIn, selettore):
    '''Torna il numero di nodi dell'albero, che soddisfano il selettore CSS.'''
    doc = fparse(fileIn)
    contatore = 0
    tipo = tipologia(selettore)
    if len(tipo) == 3:
        if tipo[2] == 'pf':
            padre = tipo[0]
            figlio = tipo[1]
            for i in range(1, len(doc.content[1].content), 2):
                contatore += padrefiglio(padre, figlio,
                                         doc.content[1].content[i])
        else:
            avo = tipo[0]
            discendente = tipo[1]
            for i in range(1, len(doc.content[1].content), 2):
                contatore += avodiscendente(avo, discendente,
                                            doc.content[1].content[i])
    else:
        if tipo[1] == 'tag':
            listatag = []
            for i in range(1, len(doc.content[1].content), 2):
                listatag += [doc.content[1].content[i].tag]
            contatore += conta(tipo[0], listatag, tipo[1])
        else:
            for i in range(1, len(doc.content[1].content), 2):
                contatore += conta(tipo[0], doc.content[1].content[i].attr,
                                   tipo[1])
    return contatore
def elimina_nodi(fileIn, selettore, fileOut):
    '''elimina da albero tutti i nodi che soddisfano il selettore css (compreso il loro contenuto).'''
    doc = fparse(fileIn)
    lista_selettore = modifica_selettore(selettore)
    lista_figli = []
    check_mod = False
    i = 0
    if len(lista_selettore) == 1:
        cancella(doc, lista_selettore[0].tag, lista_selettore[0].diz,
                 lista_figli, True)
    else:
        cancella(doc, lista_selettore[0].tag, lista_selettore[0].diz,
                 lista_figli)
    while i < len(lista_selettore):
        if i == len(lista_selettore) - 1:
            check_mod = True
        if i % 2 == 0:
            if lista_selettore[i - 1] == '>':
                lista_ap = []
                elimina_nodi_cancellasubnodi(lista_figli, lista_selettore, i,
                                             lista_ap, check_mod)
                lista_figli = lista_ap
            elif lista_selettore[i - 1] == '^':
                lista_ap = []
                elimina_nodi_cancellanodi(lista_figli, lista_selettore, i,
                                          lista_ap, check_mod)
                lista_figli = lista_ap
        i += 1
    del_doc = to_string_mod(doc)
    file = open(fileOut, 'w', encoding='utf8')
    file.write(del_doc)
def cambia_attributo(fileIn, selettore, chiave, valore, fileOut):
    # Modifica tutti i nodi dell'albero che soddisfano il selettore CSS
    root = fparse(fileIn)
    cambia_attributo_nodi(root, selettore.split(), chiave, valore)
    with open(fileOut, 'w', encoding='utf8') as f:
        f.write(root.to_string())
        f.close()
def elimina_nodi(fileIn, selettore, fileOut):
    # Elimina dall'albero tutti i nodi che soddisfano il selettore CSS (compreso il loro contenuto)
    root = fparse(fileIn)
    elimina_nodo(root, selettore.split())
    with open(fileOut, 'w', encoding='utf8') as f:
        f.write(root.to_string())
        f.close()
def conta_nodi(filename, raw_selector):
    '''Torna il numero di nodi dell'albero, che soddisfano il selettore CSS.'''
    document = my_html.fparse(filename)

    selector = get_css_selector_from(raw_selector)

    return count_nodes(document, selector)
Exemple #12
0
def elimina_nodi(fileIn, selettore, fileOut):
    node = fparse(fileIn)
    scan = scan_selettore(selettore)
    mem['source'] = 'delete'
    verify_scanned(scan, node, node)
    with open(fileOut, mode='w') as f:
        f.write(node.to_string())
Exemple #13
0
def cambia_attributo(fileIn, selettore, chiave, valore, fileOut):
    albero = fparse(fileIn)
    selettore = selettore.split(' ')
    l = len(selettore)
    ins = conta(albero, selettore)
    cambio(ins, chiave, valore)
    stampa(albero, fileOut)
Exemple #14
0
def elimina_nodi(fileIn, selettore, fileOut):
    albero = fparse(fileIn)
    selettore = selettore.split(' ')
    l = len(selettore)
    ins = conta(albero, selettore)
    cancella(albero, ins)
    stampa(albero, fileOut)
Exemple #15
0
def conta_nodi(fileIn, selettore):
    '''Torna il numero di nodi dell'albero, che soddisfano il selettore CSS.'''
    #Inserite qui il vostro codice
    dom = fparse(fileIn)
    regole = selettore.split(" ")
    res = _conta_nodi(dom, regole, 0)
    return len(res)
def elimina_nodi(fileIn, selettore, fileOut):

    pag = fparse(fileIn)
    selettori = selettore.split()
    lista = [pag]
    lun = len(selettori)
    esito = []
    cont = 0
    text = pag.to_string()
    s_out = ''
    if selettore[0] not in '.#@' and '>' not in selettore:
        lista = [pag]
        selettori = selettore.split()
        lun = len(selettori)
        esito = []
        cont = 0
        for x in range(lun):
            for nodo in lista:
                esito += list(t_t_n(nodo, selettori[x]))
                lista.remove(nodo)
            lista += esito
        for el in lista:
            if selettori[-1] in el.tag and el.to_string() in text:
                l_text = text.split(el.to_string())
                for x in l_text:
                    s_out += x

        s = open(fileOut, 'w')
        s.write(s_out)
        s.close()
Exemple #17
0
def elimina_nodi(fileIn, selettore, fileOut):
    '''Elimina dall'albero tutti i nodi che soddisfano il selettore CSS (compreso il loro contenuto)'''
    #Inserite qui il vostro codice
    albero = fparse(fileIn)  # crea l'albero a partire dal file
    lista = [albero]
    k = selettore.split('>')
    flag = False
    for j in k[:-1]:
        if flag:
            sel = j.split()[0]
            lista1 = []
            lista1 = verificaFiglio(lista, sel)
            lista = lista1
            l = j.split()[1:]
        else:
            l = j.split()  # dentro l avro tutti i partenti del tag finale
        flag = True
        for sel in l:
            lista = ricorsiva2(lista, sel, False)
    #-----------------------------------------------------
    if flag:
        sel = k[-1].split()[0]
        lista1 = []
        lista1 = verificaFiglio(lista, sel)
        lista = lista1
        l = k[-1].split()[1:]
    else:
        l = k[-1].split()  # dentro l avro tutti i partenti del tag finale
    for sel in l[:-1]:
        lista = ricorsiva2(lista, sel, False)
    lista = ricorsiva2(lista, l[-1], True)
    #----------------------------------------------------
    with open(fileOut, 'w') as f:
        f.write(albero.to_string())
Exemple #18
0
def elimina_nodi(fileIn, selettore, fileOut):
    radice = fparse(fileIn)
    insieme = find_selector(radice, selettore)
    for elementi in insieme:
        elimina_nodo(elementi)
    with open(fileOut, 'w') as f:
        f.write(radice.to_string())
def cambia_attributo(fileIn, selettore, chiave, valore, fileOut):
    '''modifica tutti i nodi presenti in albero che soddisfano il selettore css.'''
    doc = fparse(fileIn)
    lista_selettore = modifica_selettore(selettore)
    lista_figli = []
    check_mod = False
    i = 0
    if len(lista_selettore) == 1:
        modifica(doc, lista_selettore[0].tag, lista_selettore[0].diz,
                 lista_figli, True, chiave, valore)
    else:
        modifica(doc, lista_selettore[0].tag, lista_selettore[0].diz,
                 lista_figli)
    while i < len(lista_selettore):
        if i == len(lista_selettore) - 1:
            check_mod = True
        if i % 2 == 0:
            if lista_selettore[i - 1] == '>':
                lista_ap = []
                cambia_attributo_norm(lista_figli, lista_selettore, i,
                                      lista_ap, check_mod, chiave, valore)
                lista_figli = lista_ap
            elif lista_selettore[i - 1] == '^':
                lista_ap = []
                cambia_attributo_sub(lista_figli, lista_selettore, i, lista_ap,
                                     check_mod, chiave, valore)
                lista_figli = lista_ap
        i += 1
    file = open(fileOut, 'w', encoding='utf8')
    file.write(doc.to_string())
Exemple #20
0
def conta_nodi(fileIn, selettore):
    '''Torna il numero di nodi dell'albero, che soddisfano il selettore CSS.'''
    #Inserite qui il vostro codice
    radice = fparse(fileIn)
    ris = set()
    ris = trova_selettore(radice, selettore, ris)
    return len(ris)
def elimina_nodi(fileIn, selettore, fileOut):
    '''Elimina dall'albero tutti i nodi che soddisfano il selettore CSS (compreso il loro contenuto)'''
    doc = fparse(fileIn)
    tipo = tipologia(selettore)
    if len(tipo) == 3:
        if tipo[2] == 'pf':
            padre = tipo[0]
            figlio = tipo[1]
            for i in range(1, len(doc.content[1].content), 2):
                cancellapf(padre, figlio, doc.content[1].content[i])
        else:
            avo = tipo[0]
            discendente = tipo[1]
            for i in range(1, len(doc.content[1].content), 2):
                cancellaav(avo, discendente, doc.content[1].content[i])
    else:
        if tipo[1] == 'tag':
            listatag = []
            for i in range(1, len(doc.content[1].content), 2):
                listatag += [doc.content[1].content[i].tag]
            cancella(tipo[0], listatag, tipo[1])
        else:
            for i in range(1, len(doc.content[1].content), 2):
                cancella(tipo[0], doc.content[1].content[i].attr, tipo[1])
    with open(fileOut, 'w', encoding='utf-8') as f:
        f.write(doc.to_string())
def conta_nodi(fileIn, selettore):
    '''Torna il numero di nodi dell'albero, che soddisfano il selettore CSS.'''
    global cont
    doc = fparse(fileIn)
    lista = selettore.split(' ')
    conta(doc, lista, lista[0])
    return cont
Exemple #23
0
def conta_nodi(fileIn, selettore):
    doc = fparse(fileIn)
    c = 0
    l = []
    s = []
    if ">" in selettore or "<" in selettore:
        selettore1 = maggiore(selettore)
        selettore2 = maggiore2(selettore)
        return conta_selettore_speciale1(doc, selettore1, selettore2, c, l, s)
    if " " in selettore:
        if not ">" in selettore:
            selettore1 = maggiore(selettore)
            selettore2 = maggiore2(selettore)
            return conta_selettore_speciale2(doc, selettore1, selettore2, c, l,
                                             s)
    else:
        selettore, verifica = pulizia(selettore)
        if verifica == True:
            return attributo(doc, doc, selettore, l, c)
        else:
            return conta_selettore(
                doc,
                selettore,
                c,
                l,
            )
def cambia_attributo(fileIn, selector, kiave, valore, fileOut):
    '''Modifica tutti i nodi dell'albero che soddisfano il selector CSS'''
    documento = fparse(fileIn)
    d = 0
    draft = ''
    count = 0
    padre = ''
    fiolo = ''
    if '#' in selector:
        selector = selector[1:]
        draft = 'id'
    else:
        for x in selector:
            if d == 0:
                if x != ' ':
                    if x.isalpha() == True:
                        padre += x
                else:
                    d = 1
            else:
                if x.isalpha() == True:
                    fiolo += x
    if draft == '':
        for nodello in change_attr(documento, padre, fiolo, kiave, valore):
            count += 1
    else:
        for nodello in cambioid(documento, selector, kiave, valore):
            count += 1
    Html_file = open(fileOut, "w")
    Html_file.write(documento.to_string())
    Html_file.close()
Exemple #25
0
def conta_nodi(fileIn, selettore):
    '''Torna il numero di nodi dell'albero, che soddisfano il selettore CSS.'''
    albero=my_html.fparse(fileIn)
    page=open(fileIn)
    soup=Bsoup(page,'html.parser')
    cont=0
    if selettore.startswith('#') or selettore.startswith('.'):
        return conto(albero,soup,selettore,cont)
    if selettore.startswith('@'):
        lista=[]
        for lett in selettore:
            lista.append(lett)
        lista.remove('@')
        lista.remove('[')
        lista.remove(']')
        selettore2=''.join(lista)
        b=selettore2.split('=')
        attributo=b[1]
        for elemento in soup.find_all(width=attributo):
            cont+=1
        return cont
        
    if len(selettore)==3:
        listaselettori=selettore.split(' ')
        avo=listaselettori[0]
        discendente=listaselettori[1]
        for elemento in soup.find_all(avo):
            for el in elemento.find_all(discendente):
                cont+=1
        return cont
    for k in soup.find_all(selettore):
        cont+=1
    return cont
def conta_nodi(fileIn, selettore):
    cont = 0
    lst = []
    n = 0
    doc = fparse(fileIn)
    cont = cont_ric(doc, selettore, cont, lst, n)
    return cont
def elimina_nodi(fileIn, selettore, fileOut):
    '''Elimina dall'albero tutti i nodi che soddisfano il selettore CSS'''
    doc = fparse(fileIn)
    if '>' in selettore:
        lista = [x.stirp() for x in selettore.split('>')]
        lista_controllo = []
        if len(lista) == 2:
            for x in lista:
                lista_controllo.append(True) if x[0].isalpha else False
            if all(lista_controllo):
                EN_PadreFiglio(doc, selettore)
                with open(fileOut, 'w') as file:
                    file.write(doc.to_string())
    elif ' ' in selettore:
        lista = [x.strip() for x in selettore.split(' ')]
        lista_controllo = []
        if len(lista) == 2:
            for x in lista:
                lista_controllo.append(True) if x[0].isalpha else False
            if all(lista_controllo):
                EN_AvoDiscendente(doc, selettore)
                with open(fileOut, 'w') as file:
                    file.write(doc.to_string())
    else:
        'ciao'
def conta_nodi(fileIn, selettore):
    '''Torna il numero di nodi dell'albero, che soddisfano il selettore CSS.'''
    #Inserite qui il vostro codice
    alb = fparse(fileIn)
    nodi = []
    cerca(selettore, alb, nodi)
    return len(nodi)
Exemple #29
0
def conta_nodi(fileIn, selettore):
    '''Torna il numero di nodi dell'albero, che soddisfano il selettore CSS.'''
    file = fparse(fileIn)
    varia = [file]
    selettor = norm(selettore)
    varia = crescendo(selettor, varia)
    return len(varia)
def cambia_attributo(fileIn, selettore, chiave, valore, fileOut):
    alb = fparse(fileIn)
    f = open(fileOut, "w")
    di = 0
    daddy = ''
    fox = ''
    contatore = 0
    son = ''
    if '#' in selettore:
        selettore = selettore[1:]
        fox = 'id'
    else:
        for i in selettore:
            if di == 0:
                if i != ' ':
                    if i.isalpha() == 1:
                        daddy += i
                else:
                    di = 1
            else:
                if i.isalpha() == 1:
                    son += i

    if fox == '':
        contatore = len(cambiattrib(alb, daddy, son, chiave, valore))
    else:
        contatore = len(
            riconoscimenti_att_and_change(alb, selettore, chiave, valore))
    f.write(alb.to_string())