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

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

错误:

追溯(最近一次通话):

  文件“ 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(“ 你好,世界! ”) 

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

 

你能告诉我该怎么办吗?

在21年2018月XNUMX日的匿名询问

欢迎来到社区!

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

由GrabzIt支持人员于21年2018月XNUMX日回答

谢谢你的回答。

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

如何使用代理?

匿名于21年2018月XNUMX日回答

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

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

由GrabzIt支持人员于21年2018月XNUMX日回答

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

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

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

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

由GrabzIt支持人员于21年2018月XNUMX日回答

谢谢你的回答。

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

 

 

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

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

抓住HTMLToDOCX(“ 你好,世界! ”) 

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

 

用户:xxx@jp.xxxxx.com

密码:yyyyyyy

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

港口:8080

 

错误信息:

追溯(最近一次通话):
  在第54行的文件“ GrabzIt_test.py”中
    抓住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'

 

即使我更改了相同的错误消息 设置本地代理 来自“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月XNUMX日回答

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

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

追溯(最近一次通话):
  在第54行的文件“ GrabzIt_test.py”中
    抓住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月XNUMX日回答

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

由GrabzIt支持人员于22年2018月XNUMX日回答

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

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

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

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

匿名于22年2018月XNUMX日回答

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

由GrabzIt支持人员于22年2018月XNUMX日回答

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

追溯(最近一次通话):

  在第54行的文件“ GrabzIt_test.py”中

    抓住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月XNUMX日回答

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

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

由GrabzIt支持人员于22年2018月XNUMX日回答

非常感谢您的帮助。

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

我将尝试调试。 

匿名于22年2018月XNUMX日回答

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

由GrabzIt支持人员于22年2018月XNUMX日回答

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

由GrabzIt支持人员于22年2018月XNUMX日回答

感谢您的答复。

新错误消息:

追溯(最近一次通话):
  在第54行的文件“ GrabzIt_test.py”中
    抓住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月XNUMX日回答

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

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

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

由GrabzIt支持人员于23年2018月XNUMX日回答

感谢您的回复。

我将调试我的源代码。

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

匿名于23年2018月XNUMX日回答

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

由GrabzIt支持人员于23年2018月XNUMX日回答