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 <module>

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("<html> <body> <h1> Olá, mundo! </h1> </body> </html>")

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

você poderia me dizer o que devo fazer?

Perguntado pelo anônimo na terça-feira, 21 agosto, 2018 06: 54: 17 AM

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 na terça-feira, 21 agosto, 2018 07: 01: 51 AM

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 terça-feira, 21 agosto, 2018 09: 30: 49 AM

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 na terça-feira, 21 em agosto, 2018 12: 20: 04 PM

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 na terça-feira, 21 em agosto, 2018 05: 38: 30 PM

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("<html> <body> <h1> Olá, mundo! </h1> </body> </html>")

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 <module>
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 quarta-feira, 22 agosto, 2018 12: 34: 43 AM

desculpe, pode ser que eu defina 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 <module>
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 quarta-feira, 22 agosto, 2018 12: 40: 52 AM

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

Respondida por GrabzIt Support na quarta-feira, 22 agosto, 2018 05: 38: 10 AM

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 quarta-feira, 22 agosto, 2018 05: 50: 49 AM

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

Respondida por GrabzIt Support na quarta-feira, 22 agosto, 2018 06: 40: 47 AM

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

Traceback (última chamada mais recente):

Arquivo "GrabzIt_test.py", linha 54, em <module>

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 quarta-feira, 22 agosto, 2018 08: 39: 24 AM

Ok, nós decodificamos into ascii. Não estamos usando o Python 3, e é por isso que ele nos chamou a atenção. 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 na quarta-feira, 22 agosto, 2018 09: 22: 01 AM

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 quarta-feira, 22 agosto, 2018 10: 23: 31 AM

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 na quarta-feira, 22 agosto, 2018 12: 15: 22 PM

Creio 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 na quarta-feira, 22 agosto, 2018 05: 30: 43 PM

Obrigado pela resposta.

Nova mensagem de erro:

Traceback (última chamada mais recente):
Arquivo "GrabzIt_test.py", linha 54, em <module>
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 quarta-feira, 22 agosto, 2018 11: 52: 17 PM

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 na quinta-feira, 23 em agosto, 2018 11: 41: 44 AM

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 quinta-feira, 23 agosto, 2018 11: 56: 46 AM

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

Respondida por GrabzIt Support na quinta-feira, 23 em agosto, 2018 11: 59: 36 AM