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
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)
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)
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())
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)
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)
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()
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())
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())
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
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()
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)
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())