错误:
追溯(最近一次通话):
文件“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
密码:呸呸呸呸
代理服务器: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 中对其进行了测试,它可以在所有环境中运行,无论是否有代理以及授权代理。
如果它仍然不适合您,您将需要调试代码。