Ferramentas para capturar e converter a Web
Comunidade Online de GrabzIt

Lançar erro quando executo demonstração por python

Faça perguntas sobre como capturar ou converter páginas da Web ou HTML into imagens, documentos CSV, PDF ou DOCX, além de como converter vídeos into GIF animado usando nossa API.

erro:

Traceback (última chamada mais recente):

  Arquivo "GrabzItClient.py", linha 6, em

    pegue isso.SaveTo("documentos/resultado.docx")

  Arquivo "C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py", linha 235, em SaveTo

    id = eu mesmo.Save()

  Arquivo "C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py", linha 209, em Save

    obj = self._take(sig, callBackURL)

  Arquivo "C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py", linha 223, em _take

    retornar self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))

  Arquivo "C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py", linha 629, em HTTPPost

    h.endheaders()

  Arquivo "C:\Arquivos de Programas\Python36\lib\http\client.py", linha 1234, em cabeçalhos finais

    self._send_output(message_body, encode_chunked=encode_chunked)

  Arquivo "C:\Program Files\Python36\lib\http\client.py", linha 1026, em _send_output

    auto.enviar(msg)

  Arquivo "C:\Program Files\Python36\lib\http\client.py", linha 964, em send

    self.connect()

  Arquivo "C:\Arquivos de Programas\Python36\lib\http\client.py", linha 936, em conexão

    (self.host,self.port), self.timeout, self.source_address)

  Arquivo "C:\Program Files\Python36\lib\socket.py", linha 704, em create_connection

    para res em getaddrinfo(host, porta, 0, SOCK_STREAM):

  Arquivo "C:\Program Files\Python36\lib\socket.py", linha 743, em getaddrinfo

    para res em _socket.getaddrinfo(host, porta, família, tipo, proto, sinalizadores):

socket.gaierror: [Errno 11001] getaddrinfo falhou

 

fonte:(instalei o GrabzIt e obtive CHAVE DE APLICAÇÃO e SEGREDO DE APLICAÇÃO)

de GrabzIt importar GrabzItClient

 

grabzIt = GrabzItClient.GrabzItClient (CHAVE DE APLICAÇÃO, SEGREDO DE APLICAÇÃO)

pegue isso.HTMLToDOCX(" Olá Mundo! ") 

pegue isso.SaveTo("documentos/resultado.docx") 

 

você poderia me dizer o que devo fazer?

Perguntado por anônimo em 21 de agosto de 2018

Bem vindo à comunidade!

Geralmente um socket.gaierror: [Errno 11001] getaddrinfo falhou é causado quando o código está sendo chamado por trás de um firewall ou proxy. Certifique-se de que o aplicativo tenha acesso à porta 80.

Respondido pelo suporte GrabzIt em 21 de agosto de 2018

Obrigado pela resposta.

Sim, é o problema do proxy. Funciona bem quando mudo o outro PC que não tem proxy.

Como pode funcionar com proxy?

Respondido por anônimo em 21 de agosto de 2018

Este será um novo recurso. Estamos verificando se podemos alterar o cliente Python para permitir o uso de servidores proxy.

Se for possível, entraremos em contato com você com uma solução. Você pode experimentar se quiser, pois todos os nossos clientes são de código aberto: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

Respondido pelo suporte GrabzIt em 21 de agosto de 2018

Adicionamos o novo recurso. Basta baixar o arquivo GrabzItClient.py e substituir sua cópia aqui: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

Você pode então definir a URL do proxy do seu servidor proxy usando o novo método SetLocalProxy, por exemplo:

grabzIt.SetLocalProxy("http://123.123.123.123:21231")

Por favor, conte-nos como foi e faremos um novo lançamento em breve!

Respondido pelo suporte GrabzIt em 21 de agosto de 2018

Obrigado pela resposta.

Eu troquei o GrabzItClient.py e mudei minha fonte:

 

 

grabzIt = GrabzItClient.GrabzItClient (CHAVE DE APLICAÇÃO, SEGREDO DE APLICAÇÃO)

grabzIt.SetLocalProxy("http://xxx@jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzzz.com:8080")

pegue isso.HTMLToDOCX(" Olá Mundo! ") 

pegue isso.SaveTo("documentos/resultado.docx") 

 

usuário:xxx@jp.xxxx.com

senha:aaaaaaa

Servidor proxy:zzz.proxy.zzz.zzzzzzz.com

porta:8080

 

mensagem de erro:

Traceback (última chamada mais recente):
  Arquivo "GrabzIt_test.py", linha 54, em
    pegue isso.SaveTo("resultado.docx")
  Arquivo "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", linha 487, em SaveTo
    id = eu mesmo.Save()
  Arquivo "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", linha 435, em Save
    obj = self._take(sig, callBackURL)
  Arquivo "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", linha 463, em _take
    retornar self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
  Arquivo "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", linha 1307, em HTTPPost
    headers['Proxy-Authorization'] = 'Básico ' + base64.b64encode(auth)
  Arquivo "C:\Program Files\Python36\lib\base64.py", linha 58, em b64encode
    codificado = binascii.b2a_base64(s, nova linha=Falso)
TypeError: é necessário um objeto semelhante a bytes, não 'str'

 

mesma mensagem de erro até eu mudei DefinirProxyLocal de "http://xxx@jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzzz.com:8080" para "http://xxx%40jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzzz.com:8080"

 

Respondido por anônimo em 22 de agosto de 2018

desculpe, pode ser que eu tenha definido o proxy errado.

Alterei o proxy para "http://the_other_proxy_server:port" e a mensagem de erro tornou-se:

Traceback (última chamada mais recente):
  Arquivo "GrabzIt_test.py", linha 54, em
    pegue isso.SaveTo("resultado.docx")
  Arquivo "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", linha 487, em SaveTo
    id = eu mesmo.Save()
  Arquivo "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", linha 435, em Save
    obj = self._take(sig, callBackURL)
  Arquivo "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", linha 463, em _take
    retornar self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
  Arquivo "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", linha 1327, em HTTPPost
    h.endheaders()
  Arquivo "C:\Arquivos de Programas\Python36\lib\http\client.py", linha 1234, em cabeçalhos finais
    self._send_output(message_body, encode_chunked=encode_chunked)
  Arquivo "C:\Program Files\Python36\lib\http\client.py", linha 1026, em _send_output
    auto.enviar(msg)
  Arquivo "C:\Program Files\Python36\lib\http\client.py", linha 964, em send
    self.connect()
  Arquivo "C:\Arquivos de Programas\Python36\lib\http\client.py", linha 940, em conexão
    self._tunnel()
  Arquivo "C:\Program Files\Python36\lib\http\client.py", linha 919, em _tunnel
    mensagem.strip()))
OSError: Falha na conexão do túnel: autenticação de proxy 407 necessária

Respondido por anônimo em 22 de agosto de 2018

Você precisa especificar seu nome de usuário e senha assim: http://username:password@example.com:12335

Respondido pelo suporte GrabzIt em 22 de agosto de 2018

Sim, especifiquei meu nome de usuário e senha (pergunta de quarta-feira, 22 de agosto de 2018, 09:34:43), como:

http://username:password@example.com:12335

nome de usuário é endereço de e-mail (xxx@jp.xxxxx.com), então mudei para xxx%40jp.xxxxx.com

mas é a mesma mensagem de erro: TypeError: é necessário um objeto semelhante a bytes, não 'str'

Respondido por anônimo em 22 de agosto de 2018

Desculpe, perdi sua resposta anterior. Acho que este é um problema do Python 3 e liberei uma correção que deve resolver o erro. Você pode atualizar GrabzItClient.py novamente em: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

Respondido pelo suporte GrabzIt em 22 de agosto de 2018

Substituí o arquivo python e encontrei uma nova mensagem de erro:

Traceback (última chamada mais recente):

  Arquivo "GrabzIt_test.py", linha 54, em

    pegue isso.SaveTo("resultado.docx")

  Arquivo "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", linha 244, em SaveTo

    id = eu mesmo.Save()

  Arquivo "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", linha 218, em Save

    obj = self._take(sig, callBackURL)

  Arquivo "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", linha 232, em _take

    retornar self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))

  Arquivo "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", linha 661, em HTTPPost

    headers['Proxy-Authorization'] = 'Básico ' + encodedAuth

TypeError: deve ser str, não bytes

Respondido por anônimo em 22 de agosto de 2018

Ok, nós decodificamos into ascii. Não estamos usando Python 3, e é por isso que nos surpreendeu. Atualize seu código aqui: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

Como se trata de código aberto, sinta-se à vontade para depurar e enviar quaisquer melhorias que desejar para o Github. Como não temos acesso à sua configuração.

Respondido pelo suporte GrabzIt em 22 de agosto de 2018

Muito obrigado pela sua ajuda.

OSError: Falha na conexão do túnel: autenticação de proxy 407 necessária

Vou tentar depurar. 

Respondido por anônimo em 22 de agosto de 2018

Achamos que sabemos qual é o problema, mas será necessário reescrever parte do código. Portanto, entraremos em contato com você quando terminar. Esperançosamente em 24 horas.

Respondido pelo suporte GrabzIt em 22 de agosto de 2018

Acredito que resolvemos o problema! Você pode obter a versão mais recente aqui: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

Respondido pelo suporte GrabzIt em 22 de agosto de 2018

Obrigado pela resposta.

Nova mensagem de erro:

Traceback (última chamada mais recente):
  Arquivo "GrabzIt_test.py", linha 54, em
    pegue isso.SaveTo("resultado.docx")
  Arquivo "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", linha 243, em SaveTo
    id = eu mesmo.Save()
  Arquivo "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", linha 217, em Save
    obj = self._take(sig, callBackURL)
  Arquivo "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", linha 231, em _take
    retornar self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
  Arquivo "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", linha 629, em HTTPPost
    h = self._getConnection()
  Arquivo "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", linha 679, em _getConnection
    h.putheader('autorização proxy', 'Básico' + encodedAuth)
  Arquivo "C:\Program Files\Python36\lib\http\client.py", linha 1201, no putheader
    aumentar CannotSendHeader()
http.client.CannotSendHeader

 

Respondido por anônimo em 22 de agosto de 2018

Fizemos algumas pequenas melhorias em: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

E testei em Python 2.7, 3.4 e 3.6 e funciona em todos os ambientes, com e sem proxies e com proxies autorizados.

Se ainda não estiver funcionando para você, você precisará depurar o código.

Respondido pelo suporte GrabzIt em 23 de agosto de 2018

Obrigado pela resposta.

Vou depurar minha fonte.

A propósito, você testou o nome de usuário que é Email como xxx@yyy.com?

Respondido por anônimo em 23 de agosto de 2018

Não, eu não sabia, isso precisaria ser devidamente codificado e decodificado, então talvez esse seja o problema.

Respondido pelo suporte GrabzIt em 23 de agosto de 2018