錯誤:
追溯(最近一次通話):
文件“GrabzItClient.py”,第 6 行,位於
抓住它。SaveTo(“文檔/結果.docx”)
文件“C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py”,第 235 行,位於 SaveTo
id = 自我.Save()
文件“C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py”,第 209 行,位於 Save
obj = self._take(sig, callBackURL)
文件“C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py”,第 223 行,位於 _take 中
返回 self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
文件“C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py”,第 629 行,在 HTTPPost 中
h.endheaders()
文件“C:\Program Files\Python36\lib\http\client.py”,第 1234 行,在結尾標頭中
self._send_output(message_body,encode_chunked=encode_chunked)
文件“C:\Program Files\Python36\lib\http\client.py”,第 1026 行,在 _send_output 中
自發送(msg)
文件“C:\Program Files\Python36\lib\http\client.py”,第 964 行,發送
self.connect()
文件“C:\Program Files\Python36\lib\http\client.py”,第 936 行,在連接中
(self.host,self.port), self.timeout, self.source_address)
文件“C:\Program Files\Python36\lib\socket.py”,第 704 行,create_connection
對於 getaddrinfo(主機、端口、0、SOCK_STREAM) 中的資源:
文件“C:\Program Files\Python36\lib\socket.py”,第 743 行,在 getaddrinfo 中
對於 _socket.getaddrinfo(主機、端口、系列、類型、原型、標誌)中的資源:
socket.gaierror: [Errno 11001] getaddrinfo 失敗
來源:(我安裝了GrabzIt並獲得了APPLICATION KEY和APPLICATION SECRET)
從 GrabzIt 導入 GrabzItClient
grabzIt = GrabzItClient.GrabzItClient(應用程序密鑰,應用程序秘密)
抓住它。HTMLToDOCX(“ 你好世界! ”)
抓住它。SaveTo(“文檔/結果.docx”)
你能告訴我我該怎麼辦嗎?
歡迎來到社區!
通常是 socket.gaierror: [Errno 11001] getaddrinfo 失敗 是從防火牆或代理後面調用代碼時引起的。 請確保應用程序可以訪問端口 80。
這將是一個新功能。 我們正在尋找是否可以更改 Python 客戶端以啟用代理服務器。
如果可能的話,我們會盡快與您聯繫並提供修復方案。 如果您願意,您可以自己嘗試一下,因為我們所有的客戶端都是開源的:https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py
我們添加了新功能。 只需下載 GrabzItClient.py 文件並從此處替換您的副本:https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py
然後,您可以使用新的 SetLocalProxy 方法設置代理服務器的代理 url,例如:
grabzIt.SetLocalProxy(“http://123.123.123.123:21231”)
現在請告訴我們進展如何,我們很快就會發布新版本!
謝謝你的回答。
我更換了 GrabzItClient.py 並更改了我的來源:
grabzIt = GrabzItClient.GrabzItClient(應用程序密鑰,應用程序秘密)
grabzIt.SetLocalProxy("http://xxx@jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzzz.com:8080")
抓住它。HTMLToDOCX(“ 你好世界! ”)
抓住它。SaveTo(“文檔/結果.docx”)
用戶:xxx@jp.xxxxx.com
密碼:yyyyyyy
代理服務器:zzz.proxy.zzz.zzzzzzz.com
港口:8080
錯誤信息:
追溯(最近一次通話):
文件“GrabzIt_test.py”,第 54 行,位於
抓住它。SaveTo(“結果.docx”)
文件“C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”,第 487 行,位於 SaveTo
id = 自我.Save()
文件“C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”,第 435 行,位於 Save
obj = self._take(sig, callBackURL)
文件“C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”,第 463 行,位於 _take 中
返回 self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
文件“C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”,第 1307 行,在 HTTPPost 中
headers['代理授權'] = '基本' + base64.b64encode(auth)
文件“C:\Program Files\Python36\lib\base64.py”,第 58 行,b64encode
編碼 = binascii.b2a_base64(s, newline=False)
類型錯誤:需要類似字節的對象,而不是“str”
即使我改變了同樣的錯誤消息 設置本地代理 來自“http://xxx@jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzzz.com:8080“ 至 "http://xxx%40jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzzz.com:8080"
抱歉,可能是我設置了錯誤的代理。
我將代理更改為“http://the_other_proxy_server:port”,錯誤消息變為:
追溯(最近一次通話):
文件“GrabzIt_test.py”,第 54 行,位於
抓住它。SaveTo(“結果.docx”)
文件“C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”,第 487 行,位於 SaveTo
id = 自我.Save()
文件“C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”,第 435 行,位於 Save
obj = self._take(sig, callBackURL)
文件“C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”,第 463 行,位於 _take 中
返回 self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
文件“C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”,第 1327 行,在 HTTPPost 中
h.endheaders()
文件“C:\Program Files\Python36\lib\http\client.py”,第 1234 行,在結尾標頭中
self._send_output(message_body,encode_chunked=encode_chunked)
文件“C:\Program Files\Python36\lib\http\client.py”,第 1026 行,在 _send_output 中
自發送(msg)
文件“C:\Program Files\Python36\lib\http\client.py”,第 964 行,發送
self.connect()
文件“C:\Program Files\Python36\lib\http\client.py”,第 940 行,在連接中
self._tunnel()
文件“C:\Program Files\Python36\lib\http\client.py”,第 919 行,位於 _tunnel 中
消息.strip()))
OSError:隧道連接失敗:407 需要代理身份驗證
您需要指定您的用戶名和密碼,如下所示: http://username:password@example.com:12335
是的,我指定了我的用戶名和密碼(問題於 22 年 2018 月 09 日星期三 34:43:XNUMX AM),例如:
http://username:password@example.com:12335
用戶名是電子郵件地址(xxx@jp.xxxxx.com),所以我更改為xxx%40jp.xxxxx.com
但它是相同的錯誤消息:TypeError: a bytes-like object is required, not 'str'
抱歉,我錯過了您之前的回复。 我認為這是一個 Python 3 問題,並且已經發布了一個修復程序來解決該錯誤。 請您再次更新 GrabzItClient.py: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py
我替換了 python 文件並發現新的錯誤消息:
追溯(最近一次通話):
文件“GrabzIt_test.py”,第 54 行,位於
抓住它。SaveTo(“結果.docx”)
文件“C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”,第 244 行,位於 SaveTo
id = 自我.Save()
文件“C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”,第 218 行,位於 Save
obj = self._take(sig, callBackURL)
文件“C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”,第 232 行,位於 _take 中
返回 self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
文件“C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”,第 661 行,在 HTTPPost 中
headers['代理授權'] = '基本'+encodedAuth
類型錯誤:必須是 str,而不是 bytes
好的,我們已經解碼了 into ASCII。 我們沒有使用 Python 3,這就是它讓我們陷入困境的原因。 請從此處更新您的代碼:https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py
由於這是開源的,請隨意調試並將您想要的任何改進提交到 Github。 因為我們無權訪問您的設置。
我相信我們已經解決了這個問題! 您可以在這裡獲取最新版本:https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py
感謝您的答复。
新的錯誤消息:
追溯(最近一次通話):
文件“GrabzIt_test.py”,第 54 行,位於
抓住它。SaveTo(“結果.docx”)
文件“C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”,第 243 行,位於 SaveTo
id = 自我.Save()
文件“C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”,第 217 行,位於 Save
obj = self._take(sig, callBackURL)
文件“C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”,第 231 行,位於 _take 中
返回 self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
文件“C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”,第 629 行,在 HTTPPost 中
h = self._getConnection()
文件“C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py”,第 679 行,在 _getConnection 中
h.putheader('代理授權','基本'+encodedAuth)
文件“C:\Program Files\Python36\lib\http\client.py”,第 1201 行,位於 putheader 中
引發 CannotSendHeader()
http.client.CannotSendHeader
我們對以下內容進行了一些小的改進:https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py
並在 Python 2.7、3.4 和 3.6 中對其進行了測試,它可以在所有環境中運行,無論是否有代理以及授權代理。
如果它仍然不適合您,您將需要調試代碼。