Zadaj pytania, jak przechwytywać lub konwertować strony internetowe lub HTML into obrazy, dokumenty CSV, PDF lub DOCX, a także informacje na temat konwertowania filmów into animowane pliki GIF za pomocą naszego interfejsu API.
błąd:
Traceback (ostatnie połączenie ostatnio):
Plik „GrabzItClient.py”, linia 6, w
złapTo.SaveTo(„dokumenty/wynik.docx”)
Plik „C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py”, wiersz 235, w SaveTo
identyfikator = ja.Save()
Plik „C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py”, wiersz 209, w Save
obj = self._take(sig, callBackURL)
Plik „C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py”, wiersz 223, w _take
zwróć self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
Plik „C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py”, wiersz 629, w HTTPPost
h.endheaders()
Plik „C:\Program Files\Python36\lib\http\client.py”, wiersz 1234, w nagłówkach końcowych
self._send_output(message_body, encode_chunked=encode_chunked)
Plik „C:\Program Files\Python36\lib\http\client.py”, wiersz 1026, w _send_output
self.send(msg)
Plik „C:\Program Files\Python36\lib\http\client.py”, wiersz 964, wysyłany
self.connect()
Plik „C:\Program Files\Python36\lib\http\client.py”, wiersz 936, w połączeniu
(self.host, self.port), self.timeout, self.source_address)
Plik „C:\Program Files\Python36\lib\socket.py”, wiersz 704, w pliku create_connection
dla res w getaddrinfo (host, port, 0, SOCK_STREAM):
Plik „C:\Program Files\Python36\lib\socket.py”, wiersz 743, w getaddrinfo
dla res w _socket.getaddrinfo(host, port, rodzina, typ, proto, flagi):
gniazdo.gaierror: [Errno 11001] getaddrinfo nie powiodło się
źródło: (zainstalowałem GrabzIt i otrzymałem KLUCZ APLIKACJI oraz TAJNE APLIKACJE)
z GrabzIt import GrabzItClient
grabzIt = GrabzItClient.GrabzItClient(KLUCZ APLIKACJI, SEKRET APLIKACJI)
złapTo.HTMLToDOCX(„ Witaj świecie! ")
złapTo.SaveTo(„dokumenty/wynik.docx”)
czy możesz mi powiedzieć, co mam zrobić?
Witamy w społeczności!
Zwykle a gniazdo.gaierror: [Errno 11001] getaddrinfo nie powiodło się powstaje, gdy kod jest wywoływany zza zapory ogniowej lub serwera proxy. Upewnij się, że aplikacja ma dostęp do portu 80.
Dziękuję za Twoją odpowiedź.
Tak, to problem serwera proxy. Działa prawidłowo, gdy zmieniam inny komputer, który nie ma serwera proxy.
Jak to może działać z proxy?
Będzie to nowa funkcja. Zastanawiamy się, czy możemy zmienić klienta Pythona, aby umożliwić korzystanie z serwerów proxy.
Jeśli będzie to możliwe, skontaktujemy się z Tobą z rozwiązaniem problemu. Możesz spróbować sam, jeśli chcesz, ponieważ wszyscy nasi klienci mają oprogramowanie typu open source: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py
Dodaliśmy nową funkcję. Po prostu pobierz plik GrabzItClient.py i zastąp swoją kopię stąd: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py
Następnie możesz ustawić adres URL swojego serwera proxy, korzystając z nowej metody SetLocalProxy, na przykład:
grabzIt.SetLocalProxy("http://123.123.123.123:21231")
Daj nam teraz znać, jak poszło, a wkrótce wydamy nowe wydanie!
Dziękuję za Twoją odpowiedź.
Wymieniłem GrabzItClient.py i zmieniłem moje źródło:
grabzIt = GrabzItClient.GrabzItClient(KLUCZ APLIKACJI, SEKRET APLIKACJI)
grabzIt.SetLocalProxy("http://xxx@jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzz.com:8080")
złapTo.HTMLToDOCX(„ Witaj świecie! ")
złapTo.SaveTo(„dokumenty/wynik.docx”)
użytkownik:xxx@jp.xxxxx.com
hasło:yyyyyyy
Serwer proxy:zzz.proxy.zzz.zzzzzz.com
Port:8080
Komunikat o błędzie:
Traceback (ostatnie połączenie ostatnio):
Plik „GrabzIt_test.py”, linia 54, w
złapTo.SaveTo(„wynik.docx”)
Plik „C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”, wiersz 487, w SaveTo
identyfikator = ja.Save()
Plik „C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”, wiersz 435, w Save
obj = self._take(sig, callBackURL)
Plik „C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”, wiersz 463, w _take
zwróć self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
Plik „C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”, wiersz 1307, w HTTPPost
headers['Proxy-Authorization'] = 'Podstawowy' + base64.b64encode(auth)
Plik „C:\Program Files\Python36\lib\base64.py”, wiersz 58, w kodzie b64encode
zakodowane = binascii.b2a_base64(s, nowa linia=Fałsz)
TypeError: wymagany jest obiekt podobny do bajtu, a nie „str”
ten sam komunikat o błędzie, nawet ja się zmieniłem UstawLocalProxy z "http://xxx@jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzzz.com:8080" do "http://xxx%40jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzzz.com:8080"
przepraszam, może ustawiłem zły serwer proxy.
Zmieniłem serwer proxy na „http://the_other_proxy_server:port” i komunikat o błędzie wyglądał następująco:
Traceback (ostatnie połączenie ostatnio):
Plik „GrabzIt_test.py”, linia 54, w
złapTo.SaveTo(„wynik.docx”)
Plik „C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”, wiersz 487, w SaveTo
identyfikator = ja.Save()
Plik „C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”, wiersz 435, w Save
obj = self._take(sig, callBackURL)
Plik „C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”, wiersz 463, w _take
zwróć self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
Plik „C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”, wiersz 1327, w HTTPPost
h.endheaders()
Plik „C:\Program Files\Python36\lib\http\client.py”, wiersz 1234, w nagłówkach końcowych
self._send_output(message_body, encode_chunked=encode_chunked)
Plik „C:\Program Files\Python36\lib\http\client.py”, wiersz 1026, w _send_output
self.send(msg)
Plik „C:\Program Files\Python36\lib\http\client.py”, wiersz 964, wysyłany
self.connect()
Plik „C:\Program Files\Python36\lib\http\client.py”, wiersz 940, w połączeniu
self._tunnel()
Plik „C:\Program Files\Python36\lib\http\client.py”, linia 919, w _tunnel
wiadomość.pasek()))
OSError: Połączenie tunelowe nie powiodło się: wymagane uwierzytelnienie proxy 407
Musisz podać swoją nazwę użytkownika i hasło w następujący sposób: http://username:password@example.com:12335
Tak, podałem swoją nazwę użytkownika i hasło (pytanie ze środy, 22 sierpnia 2018 o godzinie 09:34:43) w następujący sposób:
http://username:password@example.com:12335
nazwa użytkownika to adres e-mail (xxx@jp.xxxxx.com), więc zmieniłem na xxx%40jp.xxxxx.com
ale jest to ten sam komunikat o błędzie: TypeError: wymagany jest obiekt podobny do bajtu, a nie „str”
Przepraszam, przeoczyłem Twoją poprzednią odpowiedź. Myślę, że jest to problem z Pythonem 3 i wydaliśmy poprawkę, która powinna rozwiązać błąd. Czy możesz ponownie zaktualizować GrabzItClient.py z: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py
Zastąpiłem plik Pythona i znalazłem nowy komunikat o błędzie:
Traceback (ostatnie połączenie ostatnio):
Plik „GrabzIt_test.py”, linia 54, w
złapTo.SaveTo(„wynik.docx”)
Plik „C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”, wiersz 244, w SaveTo
identyfikator = ja.Save()
Plik „C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”, wiersz 218, w Save
obj = self._take(sig, callBackURL)
Plik „C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”, wiersz 232, w _take
zwróć self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
Plik „C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”, wiersz 661, w HTTPPost
headers['Proxy-Authorization'] = 'Podstawowe' + zakodowaneAuth
TypeError: musi być str, a nie bajtami
OK, rozszyfrowaliśmy to into ascii. Nie używamy Pythona 3 i dlatego nas to przykuło. Zaktualizuj swój kod tutaj: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py
Ponieważ jest to oprogramowanie typu open source, możesz swobodnie debugować i wprowadzać wszelkie ulepszenia, jakie chcesz, w Githubie. Ponieważ nie mamy dostępu do Twojej konfiguracji.
Wielkie dzięki za Twoją pomoc.
OSError: Połączenie tunelowe nie powiodło się: wymagane uwierzytelnienie proxy 407
Spróbuję zdebugować.
Sądzimy, że wiemy, na czym polega problem, jednak będzie to wymagało ponownego napisania części kodu. Dlatego skontaktujemy się z Tobą, gdy wszystko będzie gotowe. Mam nadzieję, że za 24 godziny.
Wierzę, że naprawiliśmy problem! Najnowszą wersję możesz pobrać tutaj: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py
Dzięki za odpowiedź.
Nowy komunikat o błędzie:
Traceback (ostatnie połączenie ostatnio):
Plik „GrabzIt_test.py”, linia 54, w
złapTo.SaveTo(„wynik.docx”)
Plik „C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”, wiersz 243, w SaveTo
identyfikator = ja.Save()
Plik „C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”, wiersz 217, w Save
obj = self._take(sig, callBackURL)
Plik „C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”, wiersz 231, w _take
zwróć self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
Plik „C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”, wiersz 629, w HTTPPost
h = self._getConnection()
Plik „C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”, wiersz 679, w _getConnection
h.putheader('autoryzacja proxy', 'podstawowa' + zakodowane uwierzytelnienie)
Plik „C:\Program Files\Python36\lib\http\client.py”, wiersz 1201, w nagłówku put
podnieś CannotSendHeader()
Nagłówek http.client.CannotSend
Wprowadziliśmy kilka drobnych ulepszeń w: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py
Przetestowałem go w Pythonie 2.7, 3.4 i 3.6 i działa we wszystkich środowiskach, z serwerami proxy i bez nich oraz z autoryzowanymi serwerami proxy.
Jeśli nadal nie działa, będziesz musiał zdebugować kod.
Dziękuję za odpowiedź.
Będę debugować moje źródło.
Przy okazji, czy przetestowałeś nazwę użytkownika, która jest adresem e-mail, np. xxx@yyy.com?