diff --git a/comprasnet/__init__.py b/comprasnet/__init__.py
index 0c827e7..9944c8a 100644
--- a/comprasnet/__init__.py
+++ b/comprasnet/__init__.py
@@ -358,8 +358,8 @@ def get_data(self):
def scrap_data(self):
output = {
- 'codigo-da-uasg': self.uasg_code,
- 'pregao-eletronico': self.auction_code,
+ 'codigo-da-uasg': int(self.uasg_code),
+ 'pregao-eletronico': int(self.auction_code),
}
data = self.get_data()
bs_object = BeautifulSoup(data, "html.parser")
@@ -371,14 +371,26 @@ def scrap_data(self):
output['itens'] = []
for items in items_table.find_all('tr'):
item = {}
- description = items.find('span', class_='tex3b')
+ header = items.find('span', class_='tex3b')
+ description = items.find('span', class_='tex3')
try:
- item_number, description = description.text.split(' - ')[:2]
- item['numero'] = item_number
- item['descricao'] = description.strip()
+ item_number, title = header.text.split(' - ')[:2]
+ item['numero'] = int(item_number)
+ item['titulo'] = title.strip()
+
+ description = str(description).split('
')
+ description_text = description[0].split('
')
+ description_text = description_text[0].split('')[1]
+ diff_treattment = description[1].split(':')
+
+ item['tratamento-diferenciado'] = diff_treattment[1].strip()
+ item['aplicabilidade-decreto'] = description[2].split(':')[1].strip()
+ item['aplicabilidade-margem-de-preferencia'] = description[3].split(':')[1].strip()
+ item['quantidade'] = int(description[4].split(':')[1].strip())
+ item['unidade-de-fornecimento'] = description[5].split(':')[1].strip('').split()[0]
output['itens'].append(item)
- except ValueError as e:
+ except (ValueError, IndexError) as e:
log.error('error on extract description in "{}". {}'.format(
items, self.url))
log.exception(e)
diff --git a/tests/unit/test_class_statute_auction_detail.py b/tests/unit/test_class_statute_auction_detail.py
index 3383299..85766fe 100644
--- a/tests/unit/test_class_statute_auction_detail.py
+++ b/tests/unit/test_class_statute_auction_detail.py
@@ -47,95 +47,154 @@ def test_method_scrap_data(get_data):
get_data.return_value = page_content
- output = {
- 'pregao-eletronico': 32018,
- 'itens': [
- {
- 'descricao': 'Pacote de Serviços SMP (Voz, Dados, SMS, Etc)',
- 'numero': '1'
- },
- {
- 'descricao': 'Pacote de Serviços SMP (Voz, Dados, SMS, Etc)',
- 'numero': '2'
- },
- {
- 'descricao': 'Pacote de Serviços SMP (Voz, Dados, SMS, Etc)',
- 'numero': '3'
- },
- {
- 'descricao': 'Pacote de Serviços SMP (Voz, Dados, SMS, Etc)',
- 'numero': '4'
- },
- {
- 'descricao': 'Chamadas Locais Móvel-Móvel Intraoperadora SMP-Local-MM-IO(VC1)',
- 'numero': '5'
- },
- {
- 'descricao': 'Chamadas Locais Móvel-Móvel Extraoperadora SMP-Local-MM-EO(VC1)',
- 'numero': '6'
- },
- {
- 'descricao': 'Chamadas Locais Móvel-Fixo SMP-Local-MF (VC1)',
- 'numero': '7'
- },
- {
- 'descricao': 'Pacote de Serviços SMP (Voz, Dados, SMS, Etc)',
- 'numero': '8'
- },
- {
- 'descricao': 'Pacote de Serviços SMP (Voz, Dados, SMS, Etc)',
- 'numero': '9'
- },
- {
- 'descricao': 'Pacote de Serviços SMP (Voz, Dados, SMS, Etc)',
- 'numero': '10'
- },
- {
- 'descricao': 'Pacote de Serviços SMP (Voz, Dados, SMS, Etc)',
- 'numero': '11'
- },
- {
- 'descricao': 'Pacote de Serviços SMP (Voz, Dados, SMS, Etc)',
- 'numero': '12'
- },
- {
- 'descricao': 'Pacote de Serviços SMP (Voz, Dados, SMS, Etc)',
- 'numero': '13'
- },
- {
- 'descricao': 'Pacote de Serviços SMP (Voz, Dados, SMS, Etc)',
- 'numero': '14'
- },
- {
- 'descricao': 'Chamadas Nacionais Móvel-Móvel Intraoperadora SMP-LDN-MM-IO(VC2 '
- 'e VC3)',
- 'numero': '15'
- },
- {
- 'descricao': 'Chamadas Nacionais Móvel-Móvel Extraoperadora SMP-LDN-MM-EO(VC2 '
- 'e VC3)',
- 'numero': '16'
- },
- {
- 'descricao': 'Chamadas Nacionais Móvel-Fixo SMP-LDM-MF (VC2 e VC3)',
- 'numero': '17'
- },
- {
- 'descricao': 'Chamadas Nacionais Móvel-Móvel Intraoperadora SMP-LDN-MM-IO(VC2 '
- 'e VC3)',
- 'numero': '18'
- },
- {
- 'descricao': 'Chamadas Nacionais Móvel-Móvel Extraoperadora SMP-LDN-MM-EO(VC2 '
- 'e VC3)',
- 'numero': '19'
- },
- {
- 'descricao': 'Chamadas Nacionais Móvel-Fixo SMP-LDM-MF (VC2 e VC3)',
- 'numero': '20'
- }
- ],
- 'codigo-da-uasg': 160478
- }
+ output = {'codigo-da-uasg': 160478,
+ 'itens': [{'aplicabilidade-decreto': 'Não',
+ 'aplicabilidade-margem-de-preferencia': 'Não',
+ 'numero': 1,
+ 'quantidade': 60,
+ 'titulo': 'Pacote de Serviços SMP (Voz, Dados, SMS, Etc)',
+ 'tratamento-diferenciado': '-',
+ 'unidade-de-fornecimento': 'Assinatura'},
+ {'aplicabilidade-decreto': 'Não',
+ 'aplicabilidade-margem-de-preferencia': 'Não',
+ 'numero': 2,
+ 'quantidade': 60,
+ 'titulo': 'Pacote de Serviços SMP (Voz, Dados, SMS, Etc)',
+ 'tratamento-diferenciado': '-',
+ 'unidade-de-fornecimento': 'Assinatura'},
+ {'aplicabilidade-decreto': 'Não',
+ 'aplicabilidade-margem-de-preferencia': 'Não',
+ 'numero': 3,
+ 'quantidade': 60,
+ 'titulo': 'Pacote de Serviços SMP (Voz, Dados, SMS, Etc)',
+ 'tratamento-diferenciado': '-',
+ 'unidade-de-fornecimento': 'Assinatura'},
+ {'aplicabilidade-decreto': 'Não',
+ 'aplicabilidade-margem-de-preferencia': 'Não',
+ 'numero': 4,
+ 'quantidade': 60,
+ 'titulo': 'Pacote de Serviços SMP (Voz, Dados, SMS, Etc)',
+ 'tratamento-diferenciado': '-',
+ 'unidade-de-fornecimento': 'Assinatura'},
+ {'aplicabilidade-decreto': 'Não',
+ 'aplicabilidade-margem-de-preferencia': 'Não',
+ 'numero': 5,
+ 'quantidade': 6000,
+ 'titulo': 'Chamadas Locais Móvel-Móvel Intraoperadora '
+ 'SMP-Local-MM-IO(VC1)',
+ 'tratamento-diferenciado': '-',
+ 'unidade-de-fornecimento': 'Minutos'},
+ {'aplicabilidade-decreto': 'Não',
+ 'aplicabilidade-margem-de-preferencia': 'Não',
+ 'numero': 6,
+ 'quantidade': 6000,
+ 'titulo': 'Chamadas Locais Móvel-Móvel Extraoperadora '
+ 'SMP-Local-MM-EO(VC1)',
+ 'tratamento-diferenciado': '-',
+ 'unidade-de-fornecimento': 'Minutos'},
+ {'aplicabilidade-decreto': 'Não',
+ 'aplicabilidade-margem-de-preferencia': 'Não',
+ 'numero': 7,
+ 'quantidade': 6000,
+ 'titulo': 'Chamadas Locais Móvel-Fixo SMP-Local-MF (VC1)',
+ 'tratamento-diferenciado': '-',
+ 'unidade-de-fornecimento': 'Minutos'},
+ {'aplicabilidade-decreto': 'Não',
+ 'aplicabilidade-margem-de-preferencia': 'Não',
+ 'numero': 8,
+ 'quantidade': 12000,
+ 'titulo': 'Pacote de Serviços SMP (Voz, Dados, SMS, Etc)',
+ 'tratamento-diferenciado': '-',
+ 'unidade-de-fornecimento': 'Minutos'},
+ {'aplicabilidade-decreto': 'Não',
+ 'aplicabilidade-margem-de-preferencia': 'Não',
+ 'numero': 9,
+ 'quantidade': 6000,
+ 'titulo': 'Pacote de Serviços SMP (Voz, Dados, SMS, Etc)',
+ 'tratamento-diferenciado': '-',
+ 'unidade-de-fornecimento': 'Minutos'},
+ {'aplicabilidade-decreto': 'Não',
+ 'aplicabilidade-margem-de-preferencia': 'Não',
+ 'numero': 10,
+ 'quantidade': 9000,
+ 'titulo': 'Pacote de Serviços SMP (Voz, Dados, SMS, Etc)',
+ 'tratamento-diferenciado': '-',
+ 'unidade-de-fornecimento': 'Ligação'},
+ {'aplicabilidade-decreto': 'Não',
+ 'aplicabilidade-margem-de-preferencia': 'Não',
+ 'numero': 11,
+ 'quantidade': 9000,
+ 'titulo': 'Pacote de Serviços SMP (Voz, Dados, SMS, Etc)',
+ 'tratamento-diferenciado': '-',
+ 'unidade-de-fornecimento': 'Ligação'},
+ {'aplicabilidade-decreto': 'Não',
+ 'aplicabilidade-margem-de-preferencia': 'Não',
+ 'numero': 12,
+ 'quantidade': 1800,
+ 'titulo': 'Pacote de Serviços SMP (Voz, Dados, SMS, Etc)',
+ 'tratamento-diferenciado': '-',
+ 'unidade-de-fornecimento': 'Minutos'},
+ {'aplicabilidade-decreto': 'Não',
+ 'aplicabilidade-margem-de-preferencia': 'Não',
+ 'numero': 13,
+ 'quantidade': 3000,
+ 'titulo': 'Pacote de Serviços SMP (Voz, Dados, SMS, Etc)',
+ 'tratamento-diferenciado': '-',
+ 'unidade-de-fornecimento': 'Mensagem'},
+ {'aplicabilidade-decreto': 'Não',
+ 'aplicabilidade-margem-de-preferencia': 'Não',
+ 'numero': 14,
+ 'quantidade': 3000,
+ 'titulo': 'Pacote de Serviços SMP (Voz, Dados, SMS, Etc)',
+ 'tratamento-diferenciado': '-',
+ 'unidade-de-fornecimento': 'Mensagem'},
+ {'aplicabilidade-decreto': 'Não',
+ 'aplicabilidade-margem-de-preferencia': 'Não',
+ 'numero': 15,
+ 'quantidade': 6000,
+ 'titulo': 'Chamadas Nacionais Móvel-Móvel Intraoperadora '
+ 'SMP-LDN-MM-IO(VC2 e VC3)',
+ 'tratamento-diferenciado': '-',
+ 'unidade-de-fornecimento': 'Minutos'},
+ {'aplicabilidade-decreto': 'Não',
+ 'aplicabilidade-margem-de-preferencia': 'Não',
+ 'numero': 16,
+ 'quantidade': 6000,
+ 'titulo': 'Chamadas Nacionais Móvel-Móvel Extraoperadora '
+ 'SMP-LDN-MM-EO(VC2 e VC3)',
+ 'tratamento-diferenciado': '-',
+ 'unidade-de-fornecimento': 'Minutos'},
+ {'aplicabilidade-decreto': 'Não',
+ 'aplicabilidade-margem-de-preferencia': 'Não',
+ 'numero': 17,
+ 'quantidade': 6000,
+ 'titulo': 'Chamadas Nacionais Móvel-Fixo SMP-LDM-MF (VC2 e VC3)',
+ 'tratamento-diferenciado': '-',
+ 'unidade-de-fornecimento': 'Minutos'},
+ {'aplicabilidade-decreto': 'Não',
+ 'aplicabilidade-margem-de-preferencia': 'Não',
+ 'numero': 18,
+ 'quantidade': 6000,
+ 'titulo': 'Chamadas Nacionais Móvel-Móvel Intraoperadora '
+ 'SMP-LDN-MM-IO(VC2 e VC3)',
+ 'tratamento-diferenciado': '-',
+ 'unidade-de-fornecimento': 'Minutos'},
+ {'aplicabilidade-decreto': 'Não',
+ 'aplicabilidade-margem-de-preferencia': 'Não',
+ 'numero': 19,
+ 'quantidade': 6000,
+ 'titulo': 'Chamadas Nacionais Móvel-Móvel Extraoperadora '
+ 'SMP-LDN-MM-EO(VC2 e VC3)',
+ 'tratamento-diferenciado': '-',
+ 'unidade-de-fornecimento': 'Minutos'},
+ {'aplicabilidade-decreto': 'Não',
+ 'aplicabilidade-margem-de-preferencia': 'Não',
+ 'numero': 20,
+ 'quantidade': 6000,
+ 'titulo': 'Chamadas Nacionais Móvel-Fixo SMP-LDM-MF (VC2 e VC3)',
+ 'tratamento-diferenciado': '-',
+ 'unidade-de-fornecimento': 'Minutos'}],
+ 'pregao-eletronico': 32018}
+
assert statuse_detail.scrap_data() == output
assert statuse_detail.data == output