PageRenderTime 55ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/FoodUp-persistence/resources/datos/alimentos/extraer_datos_composicion_alimentos.py

https://gitlab.com/FoodUpProject/FoodUp
Python | 54 lines | 43 code | 2 blank | 9 comment | 6 complexity | 28aad19ce15c7502357524159858c08a MD5 | raw file
  1. # -*- coding: utf-8 -*-
  2. import urllib2,unicodedata
  3. from bs4 import BeautifulSoup
  4. #método de análisis de una dirección web
  5. def analisisDescarga(archivo,conexion):
  6. html = conexion.read()
  7. soup = BeautifulSoup(html)
  8. #obtenemos una lista de String con la condición de atributos class con valores details y price
  9. links = soup.find_all(True, {'align':['left','right']})
  10. #la lista alterna valores de nombre de producto y precio
  11. # creamos una bandera para diferenciar si es valor o producto
  12. value = False
  13. for tag in links:
  14. print("--")
  15. for linea in tag:
  16. linea = linea.strip();
  17. #adaptamos unicode a utf-8
  18. normalizado=unicodedata.normalize('NFKD', linea).encode('ascii','ignore')
  19. if len(normalizado)>1:
  20. if value:
  21. print('valor: '+normalizado)
  22. value = False
  23. archivo.write(normalizado+'\n')
  24. else:
  25. print('composicion: '+normalizado)
  26. value = True
  27. archivo.write(normalizado+'\t')
  28. #este método se conectará con la web y establece un timeout que obliga a reintentar el fallo
  29. def preparar(archivo,web):
  30. print(web)
  31. req = urllib2.Request(web)
  32. req.add_header('User-agent','Mozilla/5.0')
  33. result = urllib2.urlopen(req,timeout=10)#timeout de 10 segundos
  34. analisisDescarga(archivo,result)
  35. # preparar(archivo,web)
  36. #Programa principal
  37. print('Comienza el programa')
  38. salir = False
  39. while not salir:
  40. archivo = open(raw_input("Nombre del alimento: ")+'.csv','w')
  41. id_alim = raw_input("Id alimento: ")
  42. url = 'http://www.ienva.org/CalcDieta/composicion_sub_result.php?q=' + id_alim + '&r='
  43. archivo.write('GENERAL'+'\n')
  44. preparar(archivo,url + 'GENERAL' + '&s=1')
  45. archivo.write('MINERALES'+'\n')
  46. preparar(archivo,url + 'MINERALES' + '&s=1')
  47. archivo.write('VITAMINAS'+'\n')
  48. preparar(archivo,url + 'VITAMINAS' + '&s=1')
  49. archivo.write('ACIDOS_GRASOS'+'\n')
  50. preparar(archivo,url + 'ACIDOS_GRASOS' + '&s=1')
  51. archivo.close()
  52. print('Fin del programa')