Strumenti per acquisire e convertire il Web
La community online di GrabzIt

Genera un errore quando eseguo la demo di Python

Poni domande su come acquisire o convertire pagine Web o HTML into immagini, documenti CSV, PDF o DOCX nonché su come convertire i video into GIF animate che utilizzano la nostra API.

errore:

Traceback (ultima chiamata più recente):

  File "GrabzItClient.py", riga 6, in

    prendilo.SaveTo("documenti/risultato.docx")

  File "C:\Programmi\Python36\lib\site-packages\GrabzIt\GrabzItClient.py", riga 235, in SaveTo

    id = sé.Save()

  File "C:\Programmi\Python36\lib\site-packages\GrabzIt\GrabzItClient.py", riga 209, in Save

    oggetto = self._take(sig, callBackURL)

  File "C:\Programmi\Python36\lib\site-packages\GrabzIt\GrabzItClient.py", riga 223, in _take

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

  File "C:\Programmi\Python36\lib\site-packages\GrabzIt\GrabzItClient.py", riga 629, in HTTPPost

    h.endheaders()

  File "C:\Program Files\Python36\lib\http\client.py", riga 1234, nelle intestazioni finali

    self._send_output(message_body, encode_chunked=encode_chunked)

  File "C:\Program Files\Python36\lib\http\client.py", riga 1026, in _send_output

    self.send (msg)

  File "C:\Programmi\Python36\lib\http\client.py", riga 964, in invio

    self.connect ()

  File "C:\Programmi\Python36\lib\http\client.py", riga 936, in connessione

    (self.host,self.porta), self.timeout, self.indirizzo_origine)

  File "C:\Program Files\Python36\lib\socket.py", riga 704, in create_connection

    per res in getaddrinfo (host, porta, 0, SOCK_STREAM):

  File "C:\Programmi\Python36\lib\socket.py", riga 743, in getaddrinfo

    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):

socket.gaierror: [Errno 11001] getaddrinfo non riuscito

 

fonte: (Ho installato GrabzIt e ho ottenuto la CHIAVE DELL'APPLICAZIONE e il SEGRETO DELL'APPLICAZIONE)

da GrabzIt importa GrabzItClient

 

grabzIt = GrabzItClient.GrabzItClient(CHIAVE DELL'APPLICAZIONE, SEGRETO DELL'APPLICAZIONE)

prendilo.HTMLToDOCX(" Ciao mondo! ") 

prendilo.SaveTo("documenti/risultato.docx") 

 

potresti dirmi cosa devo fare?

Posta da anonimo il 21 agosto 2018

Benvenuto nella community!

Di solito a socket.gaierror: [Errno 11001] getaddrinfo non riuscito viene causato quando il codice viene chiamato da dietro un firewall o un proxy. Assicurati che l'applicazione abbia accesso alla porta 80.

Risposta del supporto GrabzIt il 21 agosto 2018

Grazie per la risposta.

Sì, è il problema del proxy. Funziona bene quando cambio l'altro PC che non ha proxy.

Come può funzionare con il proxy?

Risposta anonima il 21 agosto 2018

Questa sarà una nuova funzionalità. Stiamo cercando di modificare il client Python per abilitare l'uso dei server proxy.

Se è possibile ti ricontatteremo con una soluzione. Puoi provarci tu stesso, se vuoi, dato che tutti i nostri client sono open source: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

Risposta del supporto GrabzIt il 21 agosto 2018

Abbiamo aggiunto la nuova funzionalità. Basta scaricare il file GrabzItClient.py e sostituire la tua copia da qui: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

Puoi quindi impostare l'URL proxy del tuo server proxy utilizzando il nuovo metodo SetLocalProxy, ad esempio:

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

Per favore, fateci sapere come va e presto faremo una nuova versione!

Risposta del supporto GrabzIt il 21 agosto 2018

Grazie per la risposta.

Ho sostituito GrabzItClient.py e ho cambiato la mia fonte:

 

 

grabzIt = GrabzItClient.GrabzItClient(CHIAVE DELL'APPLICAZIONE, SEGRETO DELL'APPLICAZIONE)

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

prendilo.HTMLToDOCX(" Ciao mondo! ") 

prendilo.SaveTo("documenti/risultato.docx") 

 

utente:xxx@jp.xxxxx.com

password:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa XNUMXal

server proxy:zzz.proxy.zzz.zzzzzzz.com

porta:8080

 

messaggio di errore:

Traceback (ultima chiamata più recente):
  File "GrabzIt_test.py", riga 54, in
    prendilo.SaveTo("risultato.docx")
  File "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", riga 487, in SaveTo
    id = sé.Save()
  File "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", riga 435, in Save
    oggetto = self._take(sig, callBackURL)
  File "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", riga 463, in _take
    return self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
  File "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", riga 1307, in HTTPPost
    headers['Proxy-Authorization'] = 'Base' + base64.b64encode(auth)
  File "C:\Programmi\Python36\lib\base64.py", riga 58, in b64encode
    codificato = binascii.b2a_base64(s, newline=False)
TypeError: è richiesto un oggetto simile a byte, non 'str'

 

stesso messaggio di errore anche se sono cambiato Imposta proxy locale a partire dal "http://xxx@jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzzz.com:8080"A "http://xxx%40jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzzz.com:8080"

 

Risposta anonima il 22 agosto 2018

scusa, forse ho impostato il proxy sbagliato.

Ho cambiato il proxy in "http://the_other_proxy_server:port" e il messaggio di errore è diventato:

Traceback (ultima chiamata più recente):
  File "GrabzIt_test.py", riga 54, in
    prendilo.SaveTo("risultato.docx")
  File "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", riga 487, in SaveTo
    id = sé.Save()
  File "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", riga 435, in Save
    oggetto = self._take(sig, callBackURL)
  File "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", riga 463, in _take
    return self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
  File "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", riga 1327, in HTTPPost
    h.endheaders()
  File "C:\Program Files\Python36\lib\http\client.py", riga 1234, nelle intestazioni finali
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "C:\Program Files\Python36\lib\http\client.py", riga 1026, in _send_output
    self.send (msg)
  File "C:\Programmi\Python36\lib\http\client.py", riga 964, in invio
    self.connect ()
  File "C:\Programmi\Python36\lib\http\client.py", riga 940, in connessione
    self._tunnel()
  File "C:\Program Files\Python36\lib\http\client.py", riga 919, in _tunnel
    messaggio.strip()))
Errore OSE: connessione al tunnel non riuscita: 407 Autenticazione proxy richiesta

Risposta anonima il 22 agosto 2018

È necessario specificare il nome utente e la password in questo modo: http://username:password@example.com:12335

Risposta del supporto GrabzIt il 22 agosto 2018

Sì, ho specificato il mio nome utente e la mia password (domanda mercoledì 22 agosto 2018 09:34:43) in questo modo:

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

il nome utente è l'indirizzo e-mail (xxx@jp.xxxxx.com), quindi l'ho cambiato in xxx%40jp.xxxxx.com

ma è lo stesso messaggio di errore: TypeError: è richiesto un oggetto simile a byte, non 'str'

Risposta anonima il 22 agosto 2018

Scusa, mi ero persa la tua risposta precedente. Penso che questo sia un problema di Python 3 e ho rilasciato una correzione che dovrebbe risolvere l'errore. Per favore, puoi aggiornare nuovamente GrabzItClient.py da: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

Risposta del supporto GrabzIt il 22 agosto 2018

Ho sostituito il file Python e ho trovato un nuovo messaggio di errore:

Traceback (ultima chiamata più recente):

  File "GrabzIt_test.py", riga 54, in

    prendilo.SaveTo("risultato.docx")

  File "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", riga 244, in SaveTo

    id = sé.Save()

  File "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", riga 218, in Save

    oggetto = self._take(sig, callBackURL)

  File "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", riga 232, in _take

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

  File "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", riga 661, in HTTPPost

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

TypeError: deve essere str, non byte

Risposta anonima il 22 agosto 2018

Ok, l'abbiamo decodificato intoasci. Non stiamo usando Python 3, motivo per cui ci ha colto di sorpresa. Aggiorna il tuo codice da qui: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

Poiché si tratta di open source, sentiti libero di eseguire il debug e di apportare eventuali miglioramenti a Github. Poiché non abbiamo accesso alla tua configurazione.

Risposta del supporto GrabzIt il 22 agosto 2018

Molte grazie per il vostro aiuto.

Errore OSE: connessione al tunnel non riuscita: 407 Autenticazione proxy richiesta

Proverò a eseguire il debug. 

Risposta anonima il 22 agosto 2018

Pensiamo di sapere qual è il problema, tuttavia richiederà la riscrittura di parte del codice. Quindi ti contatteremo una volta terminato. Speriamo in 24 ore.

Risposta del supporto GrabzIt il 22 agosto 2018

Credo che abbiamo risolto il problema! Puoi ottenere la versione più recente qui: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

Risposta del supporto GrabzIt il 22 agosto 2018

Grazie per la risposta.

Nuovo messaggio di errore:

Traceback (ultima chiamata più recente):
  File "GrabzIt_test.py", riga 54, in
    prendilo.SaveTo("risultato.docx")
  File "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", riga 243, in SaveTo
    id = sé.Save()
  File "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", riga 217, in Save
    oggetto = self._take(sig, callBackURL)
  File "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", riga 231, in _take
    return self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
  File "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", riga 629, in HTTPPost
    h = self._getConnection()
  File "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", riga 679, in _getConnection
    h.putheader('autorizzazione proxy', 'Base' + encodedAuth)
  File "C:\Program Files\Python36\lib\http\client.py", riga 1201, in putheader
    solleva CannotSendHeader()
http.client.CannotSendHeader

 

Risposta anonima il 22 agosto 2018

Abbiamo apportato alcuni piccoli miglioramenti a: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

E l'ho testato in Python 2.7, 3.4 e 3.6 e funziona in tutti gli ambienti, con e senza proxy e con proxy autorizzati.

Se ancora non funziona per te, dovrai eseguire il debug del codice.

Risposta del supporto GrabzIt il 23 agosto 2018

Grazie per la risposta.

Effettuerò il debug della mia fonte.

A proposito, hai testato il nome utente che è Email come xxx@yyy.com?

Risposta anonima il 23 agosto 2018

No, non l'ho fatto, avrebbe dovuto essere codificato e decodificato correttamente, quindi forse è questo il problema.

Risposta del supporto GrabzIt il 23 agosto 2018