-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain_lista_inserida2.py
More file actions
234 lines (163 loc) · 6.41 KB
/
main_lista_inserida2.py
File metadata and controls
234 lines (163 loc) · 6.41 KB
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
# Inserindo a lista manualmente - e puxando status das contas
from functions import *
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup
print('Iniciando o programa')
print('')
# Iniciando o driver
driver = iniciar_driver()
print('')
lista_condominios = [{'EVERY DAY': ['16.947.267/0001-20', 150519438]}, {'LAIS ': ['06.085.961/0001-22', 89874935]}, {'LAIS ': ['06.085.961/0001-22', 89877195]}, {'DANÚBIO ': ['54.788.724/0001-70', 36895971]}]
# Nome do arquivo Excel e caminho
nome_arquivo_excel = 'dados_condominios.xlsx'
# Tenta carregar um arquivo existente, ou cria um novo se não existir
try:
df_excel = pd.read_excel(nome_arquivo_excel)
except FileNotFoundError:
df_excel = pd.DataFrame(columns=['NOME', 'CNPJ', 'INSTALACAO', 'MÊS', 'VALOR', 'STATUS'])
print('Navegando no site da EDP')
# Navegando Site
navegar_site(driver, site='https://www.edponline.com.br/imobiliaria')
# Pausa
pausa_aleatoria(3, 5)
# Ativando cookies
botao = driver.find_element(By.ID, 'onetrust-accept-btn-handler')
botao.click()
# Pausa
pausa_aleatoria(2, 4)
for item in lista_condominios:
# iniciado o site novamente
navegar_site(driver, site='https://www.edponline.com.br/imobiliaria')
# Vendo o condominio que puxareos os dados
print(f'Condomínio que iremos acessar:')
print(item)
# Armazenando dados do condomínio
for condominio, dado in item.items():
# Armazenar a chave em uma variável
nome_condominio = condominio
# Armazenar o primeiro item (item 1) em uma variável
numero_cnpj = dado[0]
# Armazenar o segundo item (item 2) em uma variável
numero_instalacao = dado[1]
# Fazendo Login
try_login(driver)
# Pausa
pausa_aleatoria(5, 8)
# Clique no link Minhas Contas
clicar_minhas_contas(driver, nome_condominio, numero_instalacao)
# Pausa
pausa_aleatoria(5, 8)
# Acessando a conta
# Clique no segundo link Extrato e 2ª Via de Conta
clicar_extrato_segunda_via(driver)
# Pausa
pausa_aleatoria(5, 8)
# Clicando no CNPJ
clicar_cnpj(driver)
# Pausa
pausa_aleatoria(5, 8)
# Acessando uma instalação
acessar_conta(driver, numero_cnpj, numero_instalacao)
max_tentativas_acesso = 3
tentativas_acesso = 0
while tentativas_acesso < max_tentativas_acesso:
# Verificando se o acesso foi bem-sucedido
url_atual = driver.current_url
if url_atual == 'https://www.edponline.com.br/servicos/extrato-de-contas':
print('Sucesso ao acessar a instalação')
break # Saia do loop se o acesso for bem-sucedido
else:
print(f'Falha ao tentar entrar na instalação - Tentativa {tentativas_acesso + 1}')
# Ações para tentar corrigir o acesso
clicar_icone_conta(driver)
pausa_aleatoria(5, 8)
clicar_botao_sair(driver)
try_login(driver)
pausa_aleatoria(5, 8)
clicar_minhas_contas(driver, nome_condominio, numero_instalacao)
pausa_aleatoria(5, 8)
clicar_extrato_segunda_via(driver)
pausa_aleatoria(5, 8)
clicar_cnpj(driver)
pausa_aleatoria(5, 8)
acessar_conta(driver, numero_cnpj, numero_instalacao)
tentativas_acesso += 1
# Se o loop atingir o número máximo de tentativas sem sucesso
else:
print(f'Não foi possível acessar a instalação após {max_tentativas_acesso} tentativas.')
# Navegando página de serviços
navegar_site(driver, site='https://www.edponline.com.br/servicos')
# Encontrando e clicando no icone da conta
clicar_icone_conta(driver)
# Pausa
pausa_aleatoria(5, 10)
# Localizando o botão sair
clicar_botao_sair(driver)
# Pausa
pausa_aleatoria(5, 10)
print(f'Indo para o próximo condomínio não foi possível entrar na conta do ({nome_condominio} - {numero_instalacao})')
print()
continue
# Pausa
pausa_aleatoria(5, 10)
# Se abrir a janela de fatura por email
fechar_janela_fatura_por_email(driver)
# Pausa
pausa_aleatoria(5, 10)
selecionar_fatura_meses(driver)
# Pausa
pausa_aleatoria(1, 2)
clicar_ver_mais(driver)
# Pausa
pausa_aleatoria(1, 2)
clicar_ver_mais(driver)
# Pausa
pausa_aleatoria(1, 2)
clicar_ver_mais(driver)
# Pausa
pausa_aleatoria(1, 2)
soup = BeautifulSoup(driver.page_source, 'html.parser')
cards = soup.find_all('div', class_='faturas__card')
dados = []
for card in cards:
mes = card.find('p', class_='faturas__value').text
valor = card.find('p', class_='faturas__value').find_next('p', class_='faturas__value').text
status = card.find('div', class_='faturas__status')
if status is not None:
status = status.find('p').text
else:
status = card.find('div', class_='faturas__contaExtrato').find('p').text
dados.append([mes, valor, status])
# print(dados)
print()
# Cria um dicionário onde cada chave é um item da lista
dicionario = {tuple(i): i for i in dados}
# Converte o dicionário de volta para uma lista
lista_sem_duplicados = list(dicionario.values())
print(lista_sem_duplicados)
# Convertendo a lista para um DataFrame do pandas
df_novo = pd.DataFrame(lista_sem_duplicados, columns=['MÊS', 'VALOR', 'STATUS'])
# Adicionando colunas do condomínio
df_novo['NOME'] = nome_condominio
df_novo['CNPJ'] = numero_cnpj
df_novo['INSTALACAO'] = numero_instalacao
# Concatenando o novo DataFrame ao DataFrame existente
df_excel = pd.concat([df_excel, df_novo], ignore_index=True)
print(f'Dados adicionados ao arquivo {nome_arquivo_excel}')
print()
# Salvando o DataFrame completo no arquivo Excel
df_excel.to_excel(nome_arquivo_excel, index=False)
# Navegando página de serviços
navegar_site(driver, site='https://www.edponline.com.br/servicos')
# Encontrando e clicando no icone da conta
clicar_icone_conta(driver)
# Pausa
pausa_aleatoria(5, 6)
# Localizando o botão sair
clicar_botao_sair(driver)
# Pausa
pausa_aleatoria(5, 6)
print()
input('Digite algo p/ fechar o programa: ')
driver.quit()