scieloorg / document-store-migracao

Document Store (Kernel) - Migração
BSD 2-Clause "Simplified" License
1 stars 6 forks source link

[conversão] Ao acessar determinada "uri" ocorre interrupção da conversão #420

Closed robertatakenaka closed 3 years ago

robertatakenaka commented 3 years ago

Descrição do problema

The exception 'Invalid URL '/apps.who.int/bmi/index.jsp?introPage=intro 3.html': No schema supplied. Perhaps you meant http:///apps.who.int/bmi/index.jsp?introPage=intro 3.html?' was raised.

File "/Users/roberta.takenaka/github.com/scieloorg/document-store-migracao/documentstore_migracao/utils/convert_html_body.py", line 573, in _transform
   html_page.remote_to_local()
 File "/Users/roberta.takenaka/github.com/scieloorg/document-store-migracao/documentstore_migracao/utils/convert_html_body.py", line 3895, in remote_to_local
   self._import_html_files()
 File "/Users/roberta.takenaka/github.com/scieloorg/document-store-migracao/documentstore_migracao/utils/convert_html_body.py", line 4019, in _import_html_files
   self._import_html_files_content()
 File "/Users/roberta.takenaka/github.com/scieloorg/document-store-migracao/documentstore_migracao/utils/convert_html_body.py", line 4032, in _import_html_files_content
   new_p = self._imported_html_file(a_link_type)
 File "/Users/roberta.takenaka/github.com/scieloorg/document-store-migracao/documentstore_migracao/utils/convert_html_body.py", line 4066, in _imported_html_file
   html_body = self._get_html_body(href)
 File "/Users/roberta.takenaka/github.com/scieloorg/document-store-migracao/documentstore_migracao/utils/convert_html_body.py", line 4092, in _get_html_body
   file_content = file_location.content
 File "/Users/roberta.takenaka/github.com/scieloorg/document-store-migracao/documentstore_migracao/utils/convert_html_body.py", line 3780, in content
   _content = self.download()
 File "/Users/roberta.takenaka/github.com/scieloorg/document-store-migracao/documentstore_migracao/utils/convert_html_body.py", line 3796, in download
   r = requests.get(self.remote, timeout=TIMEOUT)
 File "/Users/roberta.takenaka/github.com/scieloorg/document-store-migracao/.venv/lib/python3.8/site-packages/requests/api.py", line 75, in get
   return request('get', url, params=params, **kwargs)
 File "/Users/roberta.takenaka/github.com/scieloorg/document-store-migracao/.venv/lib/python3.8/site-packages/requests/api.py", line 60, in request
   return session.request(method=method, url=url, **kwargs)
 File "/Users/roberta.takenaka/github.com/scieloorg/document-store-migracao/.venv/lib/python3.8/site-packages/requests/sessions.py", line 519, in request
   prep = self.prepare_request(req)
 File "/Users/roberta.takenaka/github.com/scieloorg/document-store-migracao/.venv/lib/python3.8/site-packages/requests/sessions.py", line 452, in prepare_request
   p.prepare(
 File "/Users/roberta.takenaka/github.com/scieloorg/document-store-migracao/.venv/lib/python3.8/site-packages/requests/models.py", line 313, in prepare
   self.prepare_url(url, params)
 File "/Users/roberta.takenaka/github.com/scieloorg/document-store-migracao/.venv/lib/python3.8/site-packages/requests/models.py", line 387, in prepare_url
   raise MissingSchema(error)
requests.exceptions.MissingSchema: Invalid URL '/apps.who.int/bmi/index.jsp?introPage=intro 3.html': No schema supplied. Perhaps you meant http:///apps.who.int/bmi/index.jsp?introPage=intro 3.html?

Passos para reproduzir o problema

  1. Execute a conversão para S0104-42302013000600016
  2. Observe o erro apresentado

Comportamento esperado

A aplicação está se comportando assim porque identificou que é um endereço "local" e por isso deveria estar dentro do site e deveria ser inserido dentro do HTML principal. No entanto, nem é um HTML a ser inserido no HTML principal e outro defeito é que o formato do endereço está incorreto e por este motivo interrompe a execução. Então, o comportamento esperado tratar a exceção MissingSchema, de forma que não interrompa a conversão.

Screenshots ou vídeos

n/a

Anexos

n/a

Ambiente utilizado

n/a

patymori commented 3 years ago

@robertatakenaka o que o código está fazendo é que, caso ele não consiga ler o arquivo local, seja porque o arquivo não existe ou porque o conteúdo está vazio, ele tenta fazer o acesso ao arquivo remotamente, sem checar se tem o Schema, necessário para acessá-lo. Não seria correto, ao invés de tentar acessar o endereço, verificar se o endereço é um endereço passível de ser acessado?