import pandas as pd import requests import re import pdfplumber from io import BytesIO # Lee el archivo CSV df = pd.read_csv('proyectos.csv') # Lista para almacenar los resultados resultados = [] # Función para extraer texto de un PDF def extraer_texto_pdf(url): try: response = requests.get(url) pdf_file = BytesIO(response.content) with pdfplumber.open(pdf_file) as pdf: texto = '' for pagina in pdf.pages: texto += pagina.extract_text() return texto except Exception as e: print(f"Error al extraer texto del PDF: {e}") return None output = open("proyectos_empresas_full.csv","a") # Itera sobre las filas del DataFrame for index, row in df.iterrows(): nombre_proyecto = row[0] promotor = row[2] url_boe = row[-1] # Última columna para la URL del BOE try: print(f"Procesando: {url_boe}") # Verifica si la URL es de un PDF if url_boe.endswith('.pdf'): content = extraer_texto_pdf(url_boe) else: response = requests.get(url_boe) content = response.text # Si no se pudo extraer contenido, continúa con la siguiente iteración if not content: resultados.append([nombre_proyecto, url_boe, "Error al acceder o extraer contenido"]) continue # Expresión regular para encontrar el nombre de la empresa entre "público" y "MW" #match = re.search(r'otorga a\s*(.*?)\s*SL\.', content, re.IGNORECASE | re.DOTALL) match = re.search(r'otorga a\s*(.*?)\s*SL|SA', content, re.IGNORECASE | re.DOTALL) if match: nombre_empresa = match.group(1).strip() else: nombre_empresa = "No encontrado" if(len(nombre_empresa)<100): print("Proyecto: "+nombre_proyecto+", Promotor: "+promotor+", Fiscal: "+nombre_empresa) #print(row) output.write(str(row[0])+","+str(row[1])+","+str(row[2])+","+str(row[3])+","+str(row[4])+","+str(row[5])+","+str(row[6])+","+str(row[7])+","+str(row[8])+","+str(row[9])+","+str(row[10])+","+str(row[11])+","+str(row[12])+","+str(row[14])+","+nombre_empresa+"\n") print(row) # Añade el resultado a la lista resultados.append([nombre_proyecto, url_boe, nombre_empresa]) except Exception as e: print(f"Error procesando la URL: {url_boe} - {e}") #resultados.append([nombre_proyecto, url_boe, "Error al acceder a la URL"]) # Imprime los resultados for resultado in resultados: print(resultado)