File size: 2,685 Bytes
fed6bb4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bc59169
fed6bb4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bc59169
d49eff8
bc59169
fed6bb4
 
 
 
 
bc59169
fed6bb4
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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)