def compare(html1, html2):
     if html1 == html2:
         return 1, 1
     # print("html1",html1)
     # print("html2",html2)
     style_rate = style_similarity(html1, html2)
     struc_rate = structural_similarity(html1, html2)
     return style_rate, struc_rate
def Assess_HTML_SIM(generatedHTML, targetHTML):
    from html_similarity import style_similarity, structural_similarity, similarity
    print("---------------------------")
    print(style_similarity(generatedHTML, targetHTML))
    print("---------------------------")
    print(structural_similarity(generatedHTML, targetHTML))
    print("---------------------------")
    print(similarity(generatedHTML, targetHTML))
Exemple #3
0
def _compare_dom_tree(value1, value2):
    return 0 if value1 == value2 else 1
    # very very slower with very very few accuracy improvement
    if value1 == value2:
        return 0
    try:
        return 1 - html_similarity.structural_similarity(value1, value2)
    except AttributeError:
        return 1
Exemple #4
0
def getDuplicateFiles():
    allFilesDetailed = getAllFilesDetailed()
    arrOfDuplicate = []
    for i in range(0, len(allFilesDetailed)):
        for j in range(i + 1, len(allFilesDetailed)):
            if structural_similarity(allFilesDetailed[i][1],
                                     allFilesDetailed[j][1]) == 1.0:
                arrOfDuplicate.append(allFilesDetailed[i][0])
                break

    return arrOfDuplicate
Exemple #5
0
def get_dom_sim(pages):
    pageCnt = len(pages)
    matrix = np.zeros(shape=(pageCnt, pageCnt))

    for i in range(pageCnt):
        matrix[i][i] = 1
        for j in range(i + 1, pageCnt):
            sim = structural_similarity(pages[i], pages[j])
            matrix[i][j] = sim
            matrix[j][i] = sim

    return matrix
Exemple #6
0
def compare_resp(flow1, flow2):
    f1 = flow.flow(flow1)
    f2 = flow.flow(flow2)
    #print(f1.resp_type)
    #print(f2.resp_type)
    #pdb.set_trace()
    if f1.resp_type != f2.resp_type:
        ctx.log.error('Unexpected response content type!')
        return
    if f1.resp_type == 'json' and f1.resp_content.keys(
    ) != f2.resp_content.keys():
        ctx.log.error('Different json structure!')
        return
    elif f1.resp_type == 'html':
        sim = hs.structural_similarity(f1.resp_raw, f2.resp_raw)
        ctx.log.error(str(sim))
def main(lang1, lang2, url1, url2, file1, file2, enc1, enc2):
    if url1 and url2:
        html1 = requests.get(url1).content.decode(
            enc1, "replace").replace("\n", " ").replace("\t", " ")
        html2 = requests.get(url2).content.decode(
            enc2, "replace").replace("\n", " ").replace("\t", " ")
    else:
        html1 = open(file1).read().replace("\n", " ").replace("\t", " ")
        html2 = open(file2).read().replace("\n", " ").replace("\t", " ")
        url1 = "http://test.com/{:s}".format(lang1)
        url2 = "http://test.com/{:s}".format(lang2)

    print("style_similarity={:f} structural_similarity={:f} similarity={:f}".format(
        style_similarity(html1, html2), structural_similarity(html1, html2), similarity(html1, html2)), file=sys.stderr)

    print("\t".join(["dummy_key", lang1, url1, html1, lang2, url2, html2]))
Exemple #8
0
def encuentraArchivoMasParecido(pageRequest):
    # Con el siguiente codigo se compara la pagina solicitada con todas las paginas que disponemos en
    #   WebPageArchive en busca del archivo mas parecido
    maxSimil = -1.0
    maxSimArchiveName = ""

    for fileData in archiveManager.getAllFilesDetailed(
    ):  # Se le pide al gestor de archivos todos los datos/contenidos de las paginas guardadas
        comp = structural_similarity(
            fileData[1], pageRequest.text
        )  # Se comapara cada uno de los datos con la pagina solicitada
        if maxSimil < comp:
            maxSimArchiveName = fileData[
                0]  # Se almacena cual es el nombre del archivo con similitud mayor para no guardar
            maxSimil = comp  # la misma pagina en el regstro y se guarda tambien dicha similitud
        if maxSimil == 1.0:
            break  # Si encuentra una similitud de 1 quiere decir que la pagina ya esta en el registro
    return maxSimArchiveName, maxSimil
Exemple #9
0
def main():
    prevFile = '.'
    prevFileName = ""
    url = 'https://egela.ehu.eus/?lang=eu'  # Esta es la URL de la pagina que se va a obtener
    trustUrl = 'google.com'

    archiveManager.updateCurrentArchive()
    duplicated = archiveManager.getDuplicateFiles()
    if duplicated:
        print(
            "Hay achivos duplicados o muy parecidos, revisa estas direcciones:"
        )
        for id, directions in enumerate(duplicated):
            print("\r", id, ": ", directions)
    else:
        print("No se han encontrado achivos duplicados o parecidos :,)")

    while True:
        ping_code = -1
        ping_meaning = ""
        newFile = False
        try:
            ping_code, ping_meaning = getPing("egela.ehu.eus", trustUrl)
            page = requests.get(
                url
            )  # Se obtiene la pagina como objeto Response y se guarda en la var. page

            errors = False
        except:
            errors = True

        if not errors:
            if structural_similarity(
                    prevFile, page.text
            ) != 1.0:  # Se compara el contenido de la pagina actual con la pagina anterior

                maxSimArchiveName, maxSimil = encuentraArchivoMasParecido(page)

                # Si despues de compararla con todas las almacenadas la mayor similitud es menor entonces:
                if maxSimil <= 0.8:
                    nFileName = 'egel_' + str(int(time.time() // 1)) + '.html'
                    archiveManager.addArchive(
                        nFileName, page.text
                    )  # El gestor se encargara de guardar esa pagina
                    maxSimArchiveName = nFileName
                    newFile = True

                prevFile = page.text
                prevFileName = maxSimArchiveName
            else:
                maxSimArchiveName = prevFileName
                maxSimil = 1.0

            regEstados.addNewLine(time.strftime("%d/%m/%Y"),
                                  time.strftime("%H:%M:%S"), newFile,
                                  proveIsFallen1(page),
                                  proveIsFallen2(maxSimArchiveName), ping_code,
                                  maxSimArchiveName)
        else:
            maxSimil = -1.0
            regEstados.addNewLine(time.strftime("%d/%m/%Y"),
                                  time.strftime("%H:%M:%S"), newFile, "ERR",
                                  "ERR", ping_code, "ERR")

            # en la carpeta de paginas
        print(
            time.ctime(), "/ Simil:", maxSimil, "/ PingCode:", ping_code,
            "; PingMeaning:", ping_meaning
        )  # Se imprime la similitud para saber que el programa no se ha colgado
        time.sleep(10)