aphonsoar/Receita_Federal_do_Brasil_-_Dados_Publicos_CNPJ

Erro em Wget.dowload

Closed this issue · 17 comments

Boa tarde pessoal! Ao corrigir o erro do .env, o código ao ser rodado apresentou o seguinte erro:
erro
Por favor, peço ajuda esse código vai me ajudar muito!

Boa tarde @tutalucena.
Cara, vamos por partes:

  • Vi que você já tem um issue aberto. Na próxima vez, responda no mesmo issue. Assim não teremos vários para o mesmo assunto.
  • Não quero ser grosso ou cruel, mas se você quer executar um script python, é recomendável que você conheça um pouco da linguagem. Você domina python? Você ta utilizando uma IDE bem poderosa (eu particularmente acho até meio pesada e lerda. Mas isso é pessoal). Você já tentou debugar? Se você debugar você vai conseguir ver o que está acontecendo na linha que aponta o erro. Ele está tentando concaternar dois datatypes diferentes. TALVEZ um str(Path(getEnv('OUTPUT_FILES_PATH'))) funcione
  • Você tentou googlar o erro antes de postar aqui? (novamente, não quero ser grosso)
  • Você configurou o arquivo .env corretamente? Porque pelo que eu to vendo aqui, o script tentou baixar direto na pasta raiz do arquivo. É isso mesmo que você quer? O ideal seria ter uma pasta para os zips e para os unzipeds.
  • Se quiser colocar uma foto do seu arquivo .env, não se acanhe. Muito provavelmente seu db é apenas localhost, então não há perigo em compartilhar seu login e senha (mas você pode ocultar essa parte pelo paint se quiser. Aproveita que eu fechei minha sprint hoje, to com tempo livre e bom humor rs)

Se conseguir resolver, feche os issues, por gentileza. Só pra facilitar a vida do pessoal que mantém o código. Eu só dei clone no repo e to recebendo no e-mail esses issues bobos kkkk vai entender

Boa tarde, Segue apontamentos:
-Vi que você já tem um issue aberto. Na próxima vez, responda no mesmo issue. Assim não teremos vários para o mesmo assunto.
--Ok, vou fechar os issue assim que resolver.
-Não quero ser grosso ou cruel, mas se você quer executar um script python, é recomendável que você conheça um pouco da linguagem. Você domina python?
--Não há porque ser grosso eu apenas estou tentando entender,vou ser sincero com você, sou analista de dados, me deram uma atividade fora do meu campo de atuação eu uso python sim porém com foco em outras coisas, de fato tenho muita dificuldade para entender o seu código. Estou fazendo o melhor que eu posso.

  • Você ta utilizando uma IDE bem poderosa (eu particularmente acho até meio pesada e lerda. Mas isso é pessoal). Você já tentou debugar? Se você debugar você vai conseguir ver o que está acontecendo na linha que aponta o erro. Ele está tentando concaternar dois datatypes diferentes. TALVEZ um str(Path(getEnv('OUTPUT_FILES_PATH'))) funcione
    --Eu não consegui entender o erro apontado pelo debug, vou tentar isso que sugeriu.Você tentou googlar o erro antes de postar aqui (novamente, não quero ser grosso)Sim.Você configurou o arquivo .env corretamente? Porque pelo que eu to vendo aqui, o scrpit tentou baixar direto na pasta raiz do script. É isso mesmo que você quer? O ideal é ter uma para para os zips e para on unzipeds
    --Sim, eu percebi que ele não baixou lá eu não entendi pq isso ocorreu. Aparentemente consegui configurar corretamente.Se quiser colocar uma foto do seu arquivo .env, não se acanhe, muito provavelmente seu db é apenas localhost, então não há perigo em compartilhar seu login e senha (mas você pode ocultar essa parte pelo paint se quiser. Aproveita que eu fechei minha sprint hoje e to com tempo livre e bom humor rs).
    -Agradeço, farei isso!

Se conseguir resolver, feche os issues, por gentileza. Só pra facilitar a vida do pessoal que mantém o código. Eu só dei clone no repo e to recebendo no e-mail esses issues bobos kkkk vai entender

erro_

Evite criar diretórios com espaço. Coloca aspas nos diretórios ou muda para TesteRF.
Tenta de novo e posta aqui. Tmj

OUTPUT_FILES_PATH=C:/diretoriosemespaco
ou
OUTPUT_FILES_PATH="C:/diretorio com espaco"

entender o seu código

O código não é meu :)

Outra dica que eu posso te dar:
O site da receita costumava ser MUITO lerdo pra baixar. Faz tempo que não baixo, não sei como tá hoje. Esse script é zero performático para download pois não é multithread (vai baixar um por um). Se eu fosse você, baixava tudo pelo Chrome, extraia, e apagava a parte de download/unzip do script.

Evite criar diretórios com espaço. Coloca aspas nos diretórios ou muda para TesteRF. Tenta de novo e posta aqui. Tmj

OUTPUT_FILES_PATH=C:/diretoriosemespaco ou OUTPUT_FILES_PATH="C:/diretorio com espaco"

entender o seu código

O código não é meu :)

Eu eliminei o espaço e não deu certo, depois adicionei aspas, e mesmo assim ele faz o dowload dos arquivos no diretório do código =(
erro_

Espera o download terminar. Eu ACHO que wget primeiro vai baixar na pasta raiz do script e depois irá mover para a pasta setada no parâmetro out.

Baixando:
image

Depois de concluído:
image

Mas novamente, se eu fosse você baixava pelo Chrome vários ao mesmo tempo, pois o servidor da RBF ainda está em 1999 aparentemente:
image

@marcelo-franceschini vou aguardar o download finalizar e lhe informo. Independente de dar certo, ou não, eu agradeço ai a sua disponibilidade em me ajudar.
Vou baixar as pastas pelo Chrome mesmo para depois fazer as tratativas, demora muito mesmo.

@marcelo-franceschini Após o dowload o debug retornou o seguinte apontamento, não consegui entender...
erro_

Desculpa a demora. Troca as linha 25 e 26 de:
output_files = Path(getEnv('OUTPUT_FILES_PATH')) extracted_files = Path(getEnv('EXTRACTED_FILES_PATH'))
para:
output_files = str(Path(getEnv('OUTPUT_FILES_PATH'))) extracted_files = str(Path(getEnv('EXTRACTED_FILES_PATH')))
e apaga a parte de download. Acho que é da linha 63 a 78.

@marcelo-franceschini eu que tenho que pedir desculpas pela série de dúvidas kkk
Fiz o correção e ele salvou os arquivos na pasta que designei! Achei que daria tudo certo, porém na hora de criar os índices travou novamente, segue o DEBUG:
erro_

Tive o mesmo problema original do @tutalucena e a solução proposta por @marcelo-franceschini , de simplesmente incluir um "str" antes de "(Path(getEnv('OUTPUT_FILES_PATH')))", na linha 25, funcionou.

str(Path(getEnv('OUTPUT_FILES_PATH')))

Muito obrigado!

Estou usando Windows 10 (sei que não é o ideal, mas faz tempo que não tenho uma segunda máquina para Linux) e Thonny (Python 3.7).

E aproveito para agradecer e parabenizar @aphonsoar

ATUALIZAÇÃO: Comemorei cedo demais também. Consegui fazer o download, mas depois caí no mesmo (segundo) erro relatado por @tutalucena (linha 729, "Undefined table"). Imagino que seja um problema de gestão de path no Windows. Movi os arquivos baixados manualmente para a pasta de destino e fiz a descompressão. Fiz um "comment out" nas linhas relativas ao download e descompressão e reiniciei o programa.

Como nada é fácil, tropecei agora em um erro de unicode:

Trabalhando no arquivo: K3241.K03200Y0.D11113.EMPRECSV [...]
Traceback (most recent call last):
  File "C:\Users\danie\Documents\Programming\CNPJ-scraper\RFB_ETL\ETL_coletar_dados_e_gravar_BD.py", line 185, in <module>
    dtype=empresa_dtypes)
  File "C:\Users\danie\AppData\Roaming\Python\Python37\site-packages\pandas\util\_decorators.py", line 311, in wrapper
    return func(*args, **kwargs)
  File "C:\Users\danie\AppData\Roaming\Python\Python37\site-packages\pandas\io\parsers\readers.py", line 586, in read_csv
    return _read(filepath_or_buffer, kwds)
  File "C:\Users\danie\AppData\Roaming\Python\Python37\site-packages\pandas\io\parsers\readers.py", line 488, in _read
    return parser.read(nrows)
  File "C:\Users\danie\AppData\Roaming\Python\Python37\site-packages\pandas\io\parsers\readers.py", line 1047, in read
    index, columns, col_dict = self._engine.read(nrows)
  File "C:\Users\danie\AppData\Roaming\Python\Python37\site-packages\pandas\io\parsers\c_parser_wrapper.py", line 223, in read
    chunks = self._reader.read_low_memory(nrows)
  File "pandas\_libs\parsers.pyx", line 801, in pandas._libs.parsers.TextReader.read_low_memory
  File "pandas\_libs\parsers.pyx", line 857, in pandas._libs.parsers.TextReader._read_rows
  File "pandas\_libs\parsers.pyx", line 843, in pandas._libs.parsers.TextReader._tokenize_rows
  File "pandas\_libs\parsers.pyx", line 1917, in pandas._libs.parsers.raise_parser_error
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 137360: invalid continuation byte

Tentei inserir um "encoding="utf-8" (tentei também encoding="latin-1") na linha 180, mas não deu certo.

Eu tambem enfrentei o problema no wget e na definicao dos paths. com isso, subi ha pouco um commit com algumas correcoes no codigo para Windows 10 - a definicao do objeto como tipo WindowsPath estava causando problema, eh melhor deixar como string mesmo. Testei o processo end-to-end aqui e agora funcionou perfeitamente, detalhes aqui: commit.

Com isso, entendo que o problema reportado nessa issue (erro no wget e path) ficou solucionado.

@tardoproto, conseguiu resolver este outro problema de encoding que vc enfrentou?

@tardoproto Tive o mesmo problema, como resolveu?

@Rodrigojxj vc clonou o projeto novamente? Eu subi um commit em Abril que aparentemente resolveu isso - pra mim funcionou 100%

Sim, consegui colocando encoding='ISO-8859-1' na parte de empresa, porém tive problemas novamente em estabelecimento.