nicuf

Find repetead links in html files from the same folder

Feb 7th, 2022 (edited)
298
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.06 KB | None | 0 0
  1. EXPLANATION:
  2.  
  3. ROMANIAN: https://neculaifantanaru.com/python-gaseste-acele-linkuri-care-se-repeta-in-alte-pagini-html-din-acelasi-folder.html
  4. ENGLISH:  https://neculaifantanaru.com/en/python-find-those-links-that-are-repeated-in-other-html-pages-in-the-same-folder.html
  5. -----------------
  6.  
  7.  
  8. import sys
  9. import re
  10. import os
  11.  
  12.  
  13. def read_text_from_file(file_path):
  14.     """
  15.    Aceasta functie returneaza continutul unui fisier.
  16.    file_path: calea catre fisierul din care vrei sa citesti
  17.    """
  18.     with open(file_path, encoding='utf8') as f:
  19.         text = f.read()
  20.         return text
  21.  
  22.  
  23. def write_to_file(text, file_path):
  24.     """
  25.    Aceasta functie scrie un text intr-un fisier.
  26.    text: textul pe care vrei sa il scrii
  27.    file_path: calea catre fisierul in care vrei sa scrii
  28.    """
  29.     with open(file_path, 'wb') as f:
  30.         f.write(text.encode('utf8', 'ignore'))
  31.  
  32.  
  33. def extragere_linkuri(cale_fisier_html):
  34.     text_html = read_text_from_file(cale_fisier_html)
  35.     flags_pattern = re.compile('<!-- FLAGS_1 -->([\s\S]*?)<!-- FLAGS -->[\s\S]*?')
  36.     text_flags = re.findall(flags_pattern, text_html)
  37.     if len(text_flags) != 0:
  38.         text_flags = text_flags[0]
  39.         link_pattern = 'href=\"(.*?)\"'
  40.         links = re.findall(link_pattern, text_flags)
  41.         links = list(set(links))
  42.     return links
  43.  
  44. def verificare_fisiere(cale_folder_fisiere, cale_fisier_rezultat):
  45.     cai_fisiere = list()
  46.     lista_linkuri = list()
  47.     for f in os.listdir(cale_folder_fisiere):
  48.             if f.endswith('.html'):
  49.                 cale_fisier_html = cale_folder_fisiere + "\\" + f
  50.                 links = extragere_linkuri(cale_fisier_html)
  51.                 cai_fisiere.append(cale_fisier_html)
  52.                 lista_linkuri.append(links)
  53.             else:
  54.                 continue
  55.     rezultate = ''
  56.     for i in range(0, len(lista_linkuri)):
  57.         for j in range(i + 1, len(lista_linkuri)):
  58.             if len(set(lista_linkuri[i]).intersection(set(lista_linkuri[j]))) != 0:
  59.                 rezultate += "Fisiere comune: \n"
  60.                 print("Fisiere comune: ")
  61.                 for link in set(lista_linkuri[i]).intersection(set(lista_linkuri[j])):
  62.                     rezultate += link
  63.                     rezultate += '\n'
  64.                     print(link, '\n')
  65.                 rezultate += 'Fisier {} ARE LINKURI IN COMUN CU: {}'.format(cai_fisiere[i], cai_fisiere[j])
  66.                 rezultate += '\n\n'
  67.                 print('Fisier {} ARE LINKURI IN COMUN CU: {}'.format(cai_fisiere[i], cai_fisiere[j]))
  68.                 print('\n\n')
  69.     limba = "en" # BEBE AICI VEZI EXACT FOLDERUL, sa lasi doar "" daca vrei sa cauti in limba romana
  70.     rezultate += "==========={}============\n\n".format(limba.upper())
  71.     print("==========={}============\n\n".format(limba.upper()))
  72.     for i in range(0, len(lista_linkuri)):
  73.         for j in range(i + 1, len(lista_linkuri)):
  74.             linkuri_limba = list()
  75.             if len(set(lista_linkuri[i]).intersection(set(lista_linkuri[j]))) != 0:
  76.                 for link in set(lista_linkuri[i]).intersection(set(lista_linkuri[j])):
  77.                     if limba in link.split('/'):
  78.                         linkuri_limba.append(link)
  79.                 if len(linkuri_limba) != 0:
  80.                     rezultate += "Fisiere comune: \n"
  81.                     print("Fisiere comune: ")
  82.                     for link in linkuri_limba:
  83.                         rezultate += link
  84.                         rezultate += '\n'
  85.                         print(link, '\n')
  86.                         rezultate += 'Fisier {} ARE LINKURI IN COMUN CU: {}'.format(cai_fisiere[i], cai_fisiere[j])
  87.                         rezultate += '\n\n'
  88.                         print('Fisier {} ARE LINKURI IN COMUN CU: {}'.format(cai_fisiere[i], cai_fisiere[j]))
  89.                         print('\n\n')
  90.  
  91.     write_to_file(rezultate, cale_fisier_rezultat)
  92.  
  93. if __name__ == "__main__":
  94.     verificare_fisiere("c:\\Folder1", "c:\\Folder1\\rezultate.txt")
  95.     # verificare_fisiere("e:\\Carte\\BB\\17 - Site Leadership\\Principal\\en", "c:\\Folder1\\rezultate.txt")
Add Comment
Please, Sign In to add comment