Posez des questions sur la capture ou la conversion de pages Web ou de HTML into des images, des documents CSV, PDF ou DOCX ainsi que des informations sur la conversion de vidéos into GIF animés utilisant notre API.
erreur:
Traceback (appel le plus récent dernier):
Fichier "GrabzItClient.py", ligne 6, dans
saisissez-le.SaveTo("documents/result.docx")
Fichier "C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py", ligne 235, dans SaveTo
identifiant = soi.Save()
Fichier "C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py", ligne 209, dans Save
obj = self._take(sig, callBackURL)
Fichier "C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py", ligne 223, dans _take
return self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
Fichier "C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py", ligne 629, dans HTTPPost
h.endheaders()
Fichier "C:\Program Files\Python36\lib\http\client.py", ligne 1234, dans les en-têtes de fin
self._send_output(message_body, encode_chunked=encode_chunked)
Fichier "C:\Program Files\Python36\lib\http\client.py", ligne 1026, dans _send_output
self.send(msg)
Fichier "C:\Program Files\Python36\lib\http\client.py", ligne 964, en envoi
auto.connect()
Fichier "C:\Program Files\Python36\lib\http\client.py", ligne 936, dans la connexion
(self.host, self.port), self.timeout, self.source_address)
Fichier "C:\Program Files\Python36\lib\socket.py", ligne 704, dans create_connection
pour res dans getaddrinfo (hôte, port, 0, SOCK_STREAM) :
Fichier "C:\Program Files\Python36\lib\socket.py", ligne 743, dans getaddrinfo
pour res dans _socket.getaddrinfo (hôte, port, famille, type, proto, drapeaux) :
socket.gaierror: [Errno 11001] getaddrinfo a échoué
source:(J'ai installé GrabzIt et j'ai obtenu la CLÉ D'APPLICATION et le SECRET D'APPLICATION)
depuis GrabzIt importer GrabzItClient
grabzIt = GrabzItClient.GrabzItClient (CLÉ D'APPLICATION, SECRET D'APPLICATION)
saisissez-le.HTMLToDOCX(" Bonjour le monde! ")
saisissez-le.SaveTo("documents/result.docx")
peux-tu me dire que dois-je faire ?
Bienvenue dans la communauté!
Généralement un socket.gaierror: [Errno 11001] getaddrinfo a échoué est provoqué lorsque le code est appelé derrière un pare-feu ou un proxy. Veuillez vous assurer que l'application a accès au port 80.
Merci pour la réponse.
Oui, c'est le problème du proxy. Il fonctionne correctement lorsque je change l'autre PC qui n'a pas de proxy.
Comment cela peut-il fonctionner avec un proxy ?
Ce sera une nouvelle fonctionnalité. Nous cherchons si nous pouvons modifier le client Python pour activer l'utilisation de serveurs proxy.
Si cela est possible, nous vous répondrons avec un correctif. Vous pouvez essayer vous-même si vous le souhaitez car tous nos clients sont open source : https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py
Nous avons ajouté la nouvelle fonctionnalité. Téléchargez simplement le fichier GrabzItClient.py et remplacez votre copie à partir d'ici : https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py
Vous pouvez ensuite définir l'url proxy de votre serveur proxy à l'aide de la nouvelle méthode SetLocalProxy, par exemple :
grabzIt.SetLocalProxy("http://123.123.123.123:21231")
S'il vous plaît, dites-nous maintenant comment ça se passe et nous ferons bientôt une nouvelle version !
Merci pour la réponse.
j'ai remplacé le GrabzItClient.py et j'ai changé ma source :
grabzIt = GrabzItClient.GrabzItClient (CLÉ D'APPLICATION, SECRET D'APPLICATION)
grabzIt.SetLocalProxy("http://xxx@jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzzzz.com:8080")
saisissez-le.HTMLToDOCX(" Bonjour le monde! ")
saisissez-le.SaveTo("documents/result.docx")
utilisateur:xxx@jp.xxxxx.com
mot de passe:yyyyyyy
Serveur proxy:zzz.proxy.zzz.zzzzzzz.com
Port:8080
Message d'erreur:
Traceback (appel le plus récent dernier):
Fichier "GrabzIt_test.py", ligne 54, dans
saisissez-le.SaveTo("résultat.docx")
Fichier "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", ligne 487, dans SaveTo
identifiant = soi.Save()
Fichier "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", ligne 435, dans Save
obj = self._take(sig, callBackURL)
Fichier "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", ligne 463, dans _take
return self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
Fichier "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", ligne 1307, dans HTTPPost
en-têtes['Proxy-Authorization'] = 'Basic' + base64.b64encode(auth)
Fichier "C:\Program Files\Python36\lib\base64.py", ligne 58, dans b64encode
encodé = binascii.b2a_base64(s, newline=False)
TypeError : un objet de type octets est requis, pas « str »
même message d'erreur même si j'ai changé DéfinirProxyLocal de "http://xxx@jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzzz.com:8080"À "http://xxx%40jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzzz.com:8080"
désolé, j'ai peut-être défini le mauvais proxy.
J'ai changé le proxy en "http://the_other_proxy_server:port" et le message d'erreur est devenu :
Traceback (appel le plus récent dernier):
Fichier "GrabzIt_test.py", ligne 54, dans
saisissez-le.SaveTo("résultat.docx")
Fichier "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", ligne 487, dans SaveTo
identifiant = soi.Save()
Fichier "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", ligne 435, dans Save
obj = self._take(sig, callBackURL)
Fichier "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", ligne 463, dans _take
return self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
Fichier "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", ligne 1327, dans HTTPPost
h.endheaders()
Fichier "C:\Program Files\Python36\lib\http\client.py", ligne 1234, dans les en-têtes de fin
self._send_output(message_body, encode_chunked=encode_chunked)
Fichier "C:\Program Files\Python36\lib\http\client.py", ligne 1026, dans _send_output
self.send(msg)
Fichier "C:\Program Files\Python36\lib\http\client.py", ligne 964, en envoi
auto.connect()
Fichier "C:\Program Files\Python36\lib\http\client.py", ligne 940, dans la connexion
soi._tunnel()
Fichier "C:\Program Files\Python36\lib\http\client.py", ligne 919, dans _tunnel
message.strip()))
OSError : Échec de la connexion au tunnel : 407 Authentification proxy requise
Vous devez spécifier votre nom d'utilisateur et votre mot de passe comme ceci : http://username:password@example.com:12335
Oui, j'ai précisé mon identifiant et mon mot de passe (question du mercredi 22 août 2018 09:34:43) comme :
http://username:password@example.com:12335
le nom d'utilisateur est l'adresse e-mail (xxx@jp.xxxxx.com), j'ai donc changé pour xxx%40jp.xxxxx.com
mais c'est le même message d'erreur : TypeError : un objet de type octet est requis, pas 'str'
Désolé, j'ai raté votre réponse précédente. Je pense qu'il s'agit d'un problème Python 3 et j'ai publié un correctif qui devrait résoudre l'erreur. Veuillez mettre à jour à nouveau GrabzItClient.py à partir de : https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py
J'ai remplacé le fichier python et j'ai trouvé un nouveau message d'erreur :
Traceback (appel le plus récent dernier):
Fichier "GrabzIt_test.py", ligne 54, dans
saisissez-le.SaveTo("résultat.docx")
Fichier "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", ligne 244, dans SaveTo
identifiant = soi.Save()
Fichier "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", ligne 218, dans Save
obj = self._take(sig, callBackURL)
Fichier "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", ligne 232, dans _take
return self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
Fichier "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", ligne 661, dans HTTPPost
en-têtes['Proxy-Authorization'] = 'Basic' + encodedAuth
TypeError : doit être une chaîne, pas un octet
Ok, nous l'avons décodé intou ascii. Nous n'utilisons pas Python 3, c'est pourquoi cela nous a surpris. Veuillez mettre à jour votre code à partir d'ici : https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py
Comme il s'agit d'un open source, n'hésitez pas à déboguer et à valider toutes les améliorations que vous souhaitez sur Github. Comme nous n'avons pas accès à votre configuration.
Merci beaucoup pour votre aide.
OSError : Échec de la connexion au tunnel : 407 Authentification proxy requise
Je vais essayer de déboguer.
Nous pensons savoir quel est le problème, mais cela nécessitera de réécrire une partie du code. Nous vous contacterons donc une fois terminé. J'espère que dans 24 heures.
Je crois que nous avons résolu le problème ! Vous pouvez obtenir la dernière version ici : https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py
Merci pour votre réponse.
Nouveau message d'erreur :
Traceback (appel le plus récent dernier):
Fichier "GrabzIt_test.py", ligne 54, dans
saisissez-le.SaveTo("résultat.docx")
Fichier "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", ligne 243, dans SaveTo
identifiant = soi.Save()
Fichier "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", ligne 217, dans Save
obj = self._take(sig, callBackURL)
Fichier "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", ligne 231, dans _take
return self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
Fichier "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", ligne 629, dans HTTPPost
h = soi._getConnection()
Fichier "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", ligne 679, dans _getConnection
h.putheader('autorisation-proxy', 'Basic' + encodedAuth)
Fichier "C:\Program Files\Python36\lib\http\client.py", ligne 1201, dans putheader
augmenter CannotSendHeader()
http.client.CannotSendHeader
Nous avons apporté quelques améliorations mineures à : https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py
Et je l'ai testé en Python 2.7, 3.4 et 3.6 et il fonctionne dans tous les environnements, avec et sans proxys et avec des proxys autorisés.
Si cela ne fonctionne toujours pas pour vous, vous devrez déboguer le code.
Merci de votre réponse.
Je vais déboguer ma source.
Au fait, avez-vous testé le nom d'utilisateur qui est Email comme xxx@yyy.com ?