捕獲和轉換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)
文件“ C:\ Program Files \ Python36 \ lib \ http \ client.py”,行1201,位於putheader中
提高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支持人員回答