Ferramentas para capturar e converter a Web
Comunidade Online de GrabzIt

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

erro:

Traceback (última chamada mais recente):

  Arquivo "GrabzItClient.py", linha 6, em

    grabzIt.SaveTo("documentos / resultado.docx")

  Arquivo "C: \ Arquivos de programas \ Python36 \ lib \ pacotes de sites \ GrabzIt \ GrabzItClient.py", linha 235, em SaveTo

    id = self.Save()

  Arquivo "C: \ Arquivos de programas \ Python36 \ lib \ pacotes de sites \ GrabzIt \ GrabzItClient.py", linha 209, em Save

    obj = self._take (sig, callBackURL)

  Arquivo "C: \ Arquivos de programas \ Python36 \ lib \ pacotes de sites \ GrabzIt \ GrabzItClient.py", linha 223, em _take

    return self.HTTPPost (self.request.url, self.request.options._getParameters (self.applicationKey, sig, callBackURL, 'html', citação (self.request.data))))

  Arquivo "C: \ Arquivos de programas \ Python36 \ lib \ pacotes de sites \ GrabzIt \ GrabzItClient.py", linha 629, no HTTPPost

    h.endheaders ()

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

    self._send_output (corpo da mensagem, encode_chunked = encode_chunked)

  Arquivo "C: \ Arquivos de Programas \ Python36 \ lib \ http \ client.py", linha 1026, em _send_output

    self.send (msg)

  O arquivo "C: \ Arquivos de Programas \ Python36 \ lib \ http \ client.py", linha 964, envia

    self.connect ()

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

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

  Arquivo "C: \ Arquivos de Programas \ Python36 \ lib \ socket.py", linha 704, em create_connection

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

  Arquivo "C: \ Arquivos de Programas \ 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

 

source : (instalei o GrabzIt e obtive a APPLICATION KEY e o APPLICATION SECRET)

de GrabzIt import GrabzItClient

 

grabzIt = GrabzItClient.GrabzItClient (CHAVE DE APLICATIVO, SEGREDO DE APLICATIVO)

grabzIt.HTMLToDOCX(" Olá Mundo! ") 

grabzIt.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. Verifique se o aplicativo tem acesso à porta 80.

Respondida por GrabzIt Support em 21 de agosto de 2018

Obrigado pela resposta.

Sim, é o problema do proxy. Ele funciona bem quando troco o outro PC que não possui proxy.

Como ele pode trabalhar com proxy?

Respondida por anônimo em 21 de agosto de 2018

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

Se for possível, entraremos em contato com você com uma correçã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

Respondida por GrabzIt Support 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 definir o URL do proxy do servidor proxy usando o novo método SetLocalProxy, por exemplo:

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

Por favor, deixe-nos agora como vai e faremos um novo lançamento em breve!

Respondida por GrabzIt Support em 21 de agosto de 2018

Obrigado pela resposta.

Eu troquei o GrabzItClient.py e alterei minha fonte:

 

 

grabzIt = GrabzItClient.GrabzItClient (CHAVE DE APLICATIVO, SEGREDO DE APLICATIVO)

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

grabzIt.HTMLToDOCX(" Olá Mundo! ") 

grabzIt.SaveTo("documentos / resultado.docx") 

 

usuário:xxx@jp.xxxxx.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
    grabzIt.SaveTo("result.docx")
  Arquivo "C: \ TEST \ GrabzIt_python \ GrabzIt \ GrabzItClient.py", linha 487, em SaveTo
    id = self.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
    return self.HTTPPost (self.request.url, self.request.options._getParameters (self.applicationKey, sig, callBackURL, 'html', citação (self.request.data))))
  Arquivo "C: \ TEST \ GrabzIt_python \ GrabzIt \ GrabzItClient.py", linha 1307, no HTTPPost
    headers ['Proxy-Authorization'] = 'Basic' + base64.b64encode (auth)
  Arquivo "C: \ Arquivos de Programas \ Python36 \ lib \ base64.py", linha 58, no código b64
    codificado = binascii.b2a_base64 (s, nova linha = Falso)
TypeError: é necessário um objeto semelhante a bytes, não 'str'

 

mesma mensagem de erro, mesmo eu mudei SetLocalProxy 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"

 

Respondida por anônimo em 22 de agosto de 2018

desculpe, posso definir o proxy errado.

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

Traceback (última chamada mais recente):
  Arquivo "GrabzIt_test.py", linha 54, em
    grabzIt.SaveTo("result.docx")
  Arquivo "C: \ TEST \ GrabzIt_python \ GrabzIt \ GrabzItClient.py", linha 487, em SaveTo
    id = self.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
    return self.HTTPPost (self.request.url, self.request.options._getParameters (self.applicationKey, sig, callBackURL, 'html', citação (self.request.data))))
  Arquivo "C: \ TEST \ GrabzIt_python \ GrabzIt \ GrabzItClient.py", linha 1327, no HTTPPost
    h.endheaders ()
  Arquivo "C: \ Arquivos de Programas \ Python36 \ lib \ http \ client.py", linha 1234, nos cabeçalhos finais
    self._send_output (corpo da mensagem, encode_chunked = encode_chunked)
  Arquivo "C: \ Arquivos de Programas \ Python36 \ lib \ http \ client.py", linha 1026, em _send_output
    self.send (msg)
  O arquivo "C: \ Arquivos de Programas \ Python36 \ lib \ http \ client.py", linha 964, envia
    self.connect ()
  Arquivo "C: \ Arquivos de Programas \ Python36 \ lib \ http \ client.py", linha 940, em conectar
    self._tunnel ()
  Arquivo "C: \ Arquivos de Programas \ Python36 \ lib \ http \ client.py", linha 919, em _tunnel
    message.strip ()))
OSError: Falha na conexão do túnel: autenticação de proxy 407 necessária

Respondida por anônimo em 22 de agosto de 2018

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

Respondida por GrabzIt Support em 22 de agosto de 2018

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

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

nome de usuário é o endereço de email (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'

Respondida por anônimo em 22 de agosto de 2018

Desculpe, perdi sua resposta anterior. Acho que este é um problema do Python 3 e lançamos 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

Respondida por GrabzIt Support 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

    grabzIt.SaveTo("result.docx")

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

    id = self.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

    return self.HTTPPost (self.request.url, self.request.options._getParameters (self.applicationKey, sig, callBackURL, 'html', citação (self.request.data))))

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

    headers ['Proxy-Authorization'] = 'Basic' + encodedAuth

TypeError: deve ser str, não bytes

Respondida 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 esse é um código aberto, sinta-se à vontade para depurar e confirmar as melhorias que deseja no Github. Como não temos acesso à sua configuração.

Respondida por GrabzIt Support 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. 

Respondida por anônimo em 22 de agosto de 2018

Achamos que sabemos qual é o problema, no entanto, será necessário reescrever parte do código. Então entraremos em contato com você quando terminar. Felizmente, em horas 24.

Respondida por GrabzIt Support em 22 de agosto de 2018

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

Respondida por GrabzIt Support 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
    grabzIt.SaveTo("result.docx")
  Arquivo "C: \ TEST \ GrabzIt_python \ GrabzIt \ GrabzItClient.py", linha 243, em SaveTo
    id = self.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
    return self.HTTPPost (self.request.url, self.request.options._getParameters (self.applicationKey, sig, callBackURL, 'html', citação (self.request.data))))
  Arquivo "C: \ TEST \ GrabzIt_python \ GrabzIt \ GrabzItClient.py", linha 629, no HTTPPost
    h = self._getConnection ()
  Arquivo "C: \ TEST \ GrabzIt_python \ GrabzIt \ GrabzItClient.py", linha 679, em _getConnection
    h.putheader ('proxy-autorização', 'Básico' + encodedAuth)
  Arquivo "C: \ Arquivos de Programas \ Python36 \ lib \ http \ client.py", linha 1201, em putheader
    raise CannotSendHeader ()
http.client.CannotSendHeader

 

Respondida 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 o testou 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ê, será necessário depurar o código.

Respondida por GrabzIt Support 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?

Respondida por anônimo em 23 de agosto de 2018

Não, eu não precisei ser codificado e decodificado adequadamente, então talvez esse seja o problema.

Respondida por GrabzIt Support em 23 de agosto de 2018