acredt-getter.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. # -*- coding: utf-8 -*-
  2. from bs4 import BeautifulSoup
  3. import subprocess
  4. import os
  5. import urllib.parse
  6. def crear_carpeta(nombre_punto):
  7. res = subprocess.call(['mkdir', 'ANEXOS_1/'+nombre_punto])
  8. print("resultado crear carpeta: "+nombre_punto+" = "+str(res))
  9. def analizar_enlaces(enlaces, punto):
  10. print(len(enlaces))
  11. for e in enlaces:
  12. if e.startswith("https://acreditacion.industrial.umsa.bo") and \
  13. not e.endswith('/'):
  14. '''
  15. enalce local ejemplo:
  16. https://acreditacion.industrial.umsa.bo/static/media/uploads/Documentacion/Reglamentos/Personal%20Administrativo/Proceso%20de%20seleccion%20de%20becarios.pdf"
  17. '''
  18. print(e.split('uploads/'))
  19. l = e.split('uploads/')
  20. s = l[-1]
  21. obtener_archivo_local(s, punto)
  22. else:
  23. # reporta en un archivo de texto el punto y el enlace que no es local o no es archivo
  24. s = punto + ": " + e + '\n'
  25. with open("enlaces_no_locales.txt", "a") as myfile:
  26. myfile.write(s)
  27. def obtener_archivo_local(enlace, punto):
  28. res = subprocess.call(['cp',
  29. '/srv/acreditacion/acredt/static/media/uploads/'+enlace,
  30. 'ANEXOS_1/'+punto])
  31. print("resultado de cp: " + str(res))
  32. html_doc = open("dim1.html", "r")
  33. soup = BeautifulSoup(html_doc, 'html.parser')
  34. soup.prettify()
  35. #print(soup.prettify())
  36. # el segundo form es la encuesta
  37. form_encuesta = soup.find_all('form')[1]
  38. #print(form_encuesta)
  39. enlaces = []
  40. #iterando sobre cada punto de la encuesta
  41. for punto in form_encuesta.find('h4').next_siblings:
  42. #print(punto)
  43. sp1 = BeautifulSoup(str(punto),'html.parser')
  44. # buscando enlaces para descargar
  45. enlace = sp1.find('a')
  46. if enlace is not None:
  47. #print(">>> "+enlace['href'])
  48. #print(">>> "+ urllib.parse.unquote(enlace['href']) )
  49. enlaces.append( urllib.parse.unquote(enlace['href']) )
  50. # buscando un titulo de punto en la encuesta
  51. titulo = sp1.find('h4')
  52. if titulo is not None:
  53. if titulo.find('strong') is not None:
  54. num_punto = titulo.find('strong').string
  55. if num_punto is not None:
  56. print()
  57. print(" ___ "+num_punto + " ___")
  58. # creando una carpeta
  59. crear_carpeta(num_punto)
  60. # ahora se analizan los enlaces conseguidos
  61. analizar_enlaces(enlaces, num_punto)
  62. enlaces = []
  63. print()