捕获和转换Web的工具
GrabzIt的在线社区

当我通过python运行演示时抛出错误

错误:

追溯(最近一次通话):

<module>中的文件“ GrabzItClient.py”,行6

抓住SaveTo(“文档/result.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)

_take中的文件“ C:\ Program Files \ Python36 \ lib \ site-packages \ GrabzIt \ GrabzItClient.py”,行223

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

HTTPPost中的36行中的文件“ C:\ Program Files \ Python629 \ lib \ site-packages \ GrabzIt \ GrabzItClient.py”

h.endheaders()

文件“ C:\ Program Files \ Python36 \ lib \ http \ client.py”,行1234,在标题中

self._send_output(消息正文,encode_chunked = encode_chunked)

_send_output中的文件“ C:\ Program Files \ Python36 \ lib \ http \ client.py”,行1026

self.send(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)

create_connection中的36行中的文件“ C:\ Program Files \ Python704 \ lib \ socket.py”

用于getaddrinfo中的res(主机,端口,0,SOCK_STREAM):

getaddrinfo中的36行的文件“ C:\ Program Files \ Python743 \ lib \ socket.py”

用于_socket.getaddrinfo中的res(主机,端口,家庭,类型,原型,标志):

socket.gaierror:[Errno 11001] getaddrinfo失败

来源:(我安装了GrabzIt并获得了APPLICATION KEY和APPLICATION SECRET)

从GrabzIt导入GrabzItClient

grabzIt = GrabzItClient.GrabzItClient(应用密钥,应用秘密)

抓住HTMLToDOCX(“ <html> <body> <h1> Hello World!</ h1> </ body> </ html>”)

抓住SaveTo(“文档/result.docx”)

你能告诉我该怎么办吗?

匿名询问,星期二,21,2018 06:54:17 AM

欢迎来到社区!

通常是 socket.gaierror:[Errno 11001] getaddrinfo失败 是从防火墙或代理后面调用代码时引起的。 请确保应用程序可以访问端口80。

GrabzIt支持在21星期二(八月,2018 07:01:51 AM)回答

谢谢你的回答。

是的,这是代理的问题。当我更换另一台没有代理的PC时,它可以正常运行。

如何使用代理?

匿名答复,星期二21,2018 09:30:49 AM

这将是一个新功能。 我们正在研究是否可以更改Python客户端以启用代理服务器。

如果有可能,我们将尽快与您联系。 如果您愿意,可以自己尝试一下,因为我们所有的客户都是开源的:https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

X星期三(21),2018 12:20:04 PM的GrabzIt支持人员回答

我们添加了新功能。 只需下载GrabzItClient.py文件并从此处替换副本即可:https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

然后,您可以使用新的SetLocalProxy方法设置代理服务器的代理URL,例如:

catchzIt.SetLocalProxy(“ http:// 123.123.123.123:21231”)

现在就让我们看看如何运行,我们将尽快发布新版本!

X星期三(21),2018 05:38:30 PM的GrabzIt支持人员回答

谢谢你的回答。

我更换了 GrabzItClient.py并更改了我的来源:

grabzIt = GrabzItClient.GrabzItClient(应用密钥,应用秘密)

capturezIt.SetLocalProxy(“ http://xxx@jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzzz.com:8080”)

抓住HTMLToDOCX(“ <html> <body> <h1> Hello World!</ h1> </ body> </ html>”)

抓住SaveTo(“文档/result.docx”)

用户:xxx@jp.xxxxx.com

密码:yyyyyyy

代理服务器:zzz.proxy.zzz.zzzzzzz.com

港口:8080

错误信息:

追溯(最近一次通话):
<module>中的文件“ GrabzIt_test.py”,行54
抓住SaveTo(“ result.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)
_take中的文件“ C:\ TEST \ GrabzIt_python \ GrabzIt \ GrabzItClient.py”,行463
返回self.HTTPPost(self.request.url,self.request.options._getParameters(self.applicationKey,sig,callBackURL,'html',quote(self.request.data)))
HTTPPost中的1307行中的文件“ C:\ TEST \ GrabzIt_python \ GrabzIt \ GrabzItClient.py”
headers ['Proxy-Authorization'] ='Basic'+ base64.b64encode(auth)
b36encode中的文件“ C:\ Program Files \ Python64 \ lib \ base58.py”,行64
编码= binascii.b2a_base64(s,换行符为False)
TypeError:需要一个类似字节的对象,而不是'str'

即使我更改了相同的错误消息 SetLocalProxy 来自“http://xxx@jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzzz.com:8080“到 "http://xxx%40jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzzz.com:8080"

匿名答复,星期三,22,八月,2018 12:34:43 AM

抱歉,可能是我设置了错误的代理。

我将代理更改为“ http:// the_other_proxy_server:port”,错误消息变为:

追溯(最近一次通话):
<module>中的文件“ GrabzIt_test.py”,行54
抓住SaveTo(“ result.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)
_take中的文件“ C:\ TEST \ GrabzIt_python \ GrabzIt \ GrabzItClient.py”,行463
返回self.HTTPPost(self.request.url,self.request.options._getParameters(self.applicationKey,sig,callBackURL,'html',quote(self.request.data)))
HTTPPost中的1327行中的文件“ C:\ TEST \ GrabzIt_python \ GrabzIt \ GrabzItClient.py”
h.endheaders()
文件“ C:\ Program Files \ Python36 \ lib \ http \ client.py”,行1234,在标题中
self._send_output(消息正文,encode_chunked = encode_chunked)
_send_output中的文件“ C:\ Program Files \ Python36 \ lib \ http \ client.py”,行1026
self.send(msg)
发送中的文件“ C:\ Program Files \ Python36 \ lib \ http \ client.py”,行964
self.connect()
连接中的文件“ C:\ Program Files \ Python36 \ lib \ http \ client.py”,行940
self._tunnel()
_tunnel中的文件36行“ C:\ Program Files \ Python919 \ lib \ http \ client.py”
message.strip()))
OSError:隧道连接失败:需要407代理身份验证

匿名答复,星期三,22,八月,2018 12:40:52 AM

您需要这样指定用户名和密码: http://username:password@example.com:12335

X星期三,22,2018 05:38:10 AM的GrabzIt支持人员回答

是的,我指定了我的用户名和密码(星期三,22八月,2018 09:34:43 AM),如下所示:

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

用户名是电子邮件地址(xxx@jp.xxxxx.com),因此我更改为xxx%40jp.xxxxx.com

但这是相同的错误消息:TypeError:需要一个类似字节的对象,而不是'str'

匿名答复,星期三,22,八月,2018 05:50:49 AM

抱歉,我错过了您之前的回复。 我认为这是Python 3的问题,已经发布了可以解决该错误的修复程序。 请您可以从以下网址再次更新GrabzItClient.py:https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

X星期三,22,2018 06:40:47 AM的GrabzIt支持人员回答

我替换了python文件并找到新的错误消息:

追溯(最近一次通话):

<module>中的文件“ GrabzIt_test.py”,行54

抓住SaveTo(“ result.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)

_take中的文件“ C:\ TEST \ GrabzIt_python \ GrabzIt \ GrabzItClient.py”,行232

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

HTTPPost中的661行中的文件“ C:\ TEST \ GrabzIt_python \ GrabzIt \ GrabzItClient.py”

headers ['Proxy-Authorization'] ='基本'+ encodingAuth

TypeError:必须为str,而不是字节

匿名答复,星期三,22,八月,2018 08:39:24 AM

好,我们已经解码了 into ascii。 我们没有使用Python 3,这就是为什么它吸引了我们的原因。 请从此处更新您的代码:https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

由于它是开源的,请随时调试并向Github提交您想要的任何改进。 由于我们无权访问您的设置。

X星期三,22,2018 09:22:01 AM的GrabzIt支持人员回答

非常感谢您的帮助。

OSError:隧道连接失败:需要407代理身份验证

我将尝试调试。

匿名答复,星期三,22,八月,2018 10:23:31 AM

我们认为我们知道问题所在,但是将需要重新编写一些代码。 因此,完成后我们将与您联系。 24小时内充满希望。

X星期三,22,2018,由GrabzIt支持人员回答12:15:22 PM

相信我们已经解决了这个问题! 您可以在此处获取最新版本:https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

X星期三,22,2018,由GrabzIt支持人员回答05:30:43 PM

感谢您的答复。

新错误消息:

追溯(最近一次通话):
<module>中的文件“ GrabzIt_test.py”,行54
抓住SaveTo(“ result.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)
_take中的文件“ C:\ TEST \ GrabzIt_python \ GrabzIt \ GrabzItClient.py”,行231
返回self.HTTPPost(self.request.url,self.request.options._getParameters(self.applicationKey,sig,callBackURL,'html',quote(self.request.data)))
HTTPPost中的629行中的文件“ C:\ TEST \ GrabzIt_python \ GrabzIt \ GrabzItClient.py”
h = self._getConnection()
_getConnection中的679行的文件“ C:\ TEST \ GrabzIt_python \ GrabzIt \ GrabzItClient.py”
h.putheader('代理授权','基本'+ encodeAuth)
在putheader中的文件“ C:\ Program Files \ Python36 \ lib \ http \ client.py”,行1201
提高CannotSendHeader()
http.client.CannotSendHeader

匿名答复,星期三,22,八月,2018 11:52:17 PM

我们对以下内容做了一些小的改进:https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

并且已经在Python 2.7,3.4和3.6中对其进行了测试,并且可以在所有环境中使用,无论是否存在代理以及具有授权代理。

如果仍然无法使用,则需要调试代码。

X星期三,23,2018 11:41:44 AM的GrabzIt支持人员回答

感谢您的回复。

我将调试我的源代码。

顺便说一句,您是否测试了诸如xxx@yyy.com这样的电子邮件用户名?

匿名答复,星期四,23,八月2018 11:56:46 AM

不,我不是必须进行正确的编码和解码,所以也许这就是问题所在。

X星期三,23,2018 11:59:36 AM的GrabzIt支持人员回答