Por algum motivo o RE continua a dizer que meu url não match com o padrão.
PS: Vi no post do Gregório que é necessario a implementação do "" antes do ".", mas mesmo assim meu código teima em não funcionar.
import re
class Url():
def __init__(self, url):
self.url = self.sanitizar_url(url)
self.valida_url()
def sanitizar_url(self, url):
if type(url) == str: return url.strip()
return ""
def valida_url(self):
if not self.url:
raise ValueError('A Url Esta Vazia')
self.verica_padroes_url()
def verica_padroes_url(self):
padrao_url = re.compile("(http(s)?://)?(www\.)?bytebank\.com(\.br)?/cambio")
print(padrao_url)
match = padrao_url.match(self.url)
if not match:
raise ValueError("A URL não é válida.")
class SeparaUrl(Url):
def __init__(self, url):
super().__init__(url)
self._indice_interrogacao = self.url.find('?')
self.valida_base()
@property
def url_base(self):
return self.url[:self._indice_interrogacao]
@property
def url_parametro(self):
return self.url[self._indice_interrogacao + 1:]
def valida_base(self):
if not self.url_base.startswith("https/"):
raise ValueError('https/ não encontrado')
elif not self.url_base.endswith('/cambio'):
raise ValueError('/cambio não encontrado')
class BuscaNoParametro(SeparaUrl):
def __init__(self, url, parametro_busca):
super().__init__(url)
self._parametro_busca = parametro_busca
@property
def indice_parametro(self):
return self.url_parametro.find(self._parametro_busca)
@property
def indice_valor(self):
return self.indice_parametro + len(self._parametro_busca) + 1
@property
def indice_e_comercial(self):
return self.url_parametro.find('&', self.indice_valor)
class PesquisaValorNoUrl(BuscaNoParametro):
def __init__(self, url, parametro_busca):
super(PesquisaValorNoUrl, self).__init__(url, parametro_busca)
self.valor = self.verifica_existencia
@property
def verifica_existencia(self):
if self.indice_e_comercial == -1: return self.url_parametro[self.indice_valor:]
return self.url_parametro[self.indice_valor:self.indice_e_comercial]
def __str__(self):
return self.valor
url_separada = PesquisaValorNoUrl(url="https/bytebank.com/cambio?quantidade=100&moedaOrigem=real&moedaDestino=dolar"
, parametro_busca='moedaDestino')
print(url_separada)