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) | |