Spaces:
Runtime error
Runtime error
| 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) | |