GrabzItのWeb Scraper Toolに関する質問をしてください。 WebスクレイパーとAPIを使用して、Webページ、画像、またはPDFドキュメントからデータを抽出する方法など。
エラー:
トレースバック(最後の最後の呼び出し):
ファイル「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
return 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"、HTTPPost の 629 行目
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」、_send_output の 1026 行目
self.send(メッセージ)
送信ファイル「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」、create_connection の 704 行目
getaddrinfo(host, port, 0, SOCK_STREAM) のリソース:
ファイル「C:\Program Files\Python36\lib\socket.py」、getaddrinfo の 743 行目
_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 にアクセスできることを確認してください。
答えてくれてありがとう。
はい、プロキシの問題です。プロキシを持たない他のPCに変更すると正常に動作します。
プロキシではどのように機能しますか?
これは新しい機能になります。 プロキシ サーバーを使用できるように 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
return 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」、HTTPPost の 1307 行目
headers['Proxy-Authorization'] = 'Basic ' + Base64.b64encode(auth)
ファイル「C:\Program Files\Python36\lib\base64.py」、b58encode の 64 行目
エンコード = binascii.b2a_base64(s, newline=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"
申し訳ありませんが、間違ったプロキシを設定した可能性があります。
プロキシを「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
return 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」、HTTPPost の 1327 行目
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」、_send_output の 1026 行目
self.send(メッセージ)
送信ファイル「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
message.strip()))
OSエラー: トンネル接続に失敗しました: 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: 'str'ではなく、バイトのようなオブジェクトが必要です
申し訳ありませんが、前の返信を見逃していました。 これは Python 3 の問題であると考えられ、エラーを解決する修正がリリースされました。 https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py から 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
return 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」、HTTPPost の 661 行目
headers['Proxy-Authorization'] = 'Basic ' + encodedAuth
TypeError: バイトではなく、str である必要があります
OK、デコードできました intアスキー。 私たちは Python 3 を使用していないため、問題が発生しました。 ここからコードを更新してください: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py
これはオープンソースなので、自由にデバッグして、必要な改善を Github にコミットしてください。 私たちはあなたの設定にアクセスできないので。
ご協力いただき誠にありがとうございます。
OSエラー: トンネル接続に失敗しました: 407 プロキシ認証が必要です
デバッグしてみます。
問題が何であるかはわかっていると思いますが、コードの一部を書き直す必要があります。 ですので、完了しましたらご連絡させていただきます。 できれば24時間以内に。
問題は解決したと思います! 最新版はここから入手できます: 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
return 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」、HTTPPost の 629 行目
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 でテストしたところ、プロキシの有無にかかわらず、また承認されたプロキシを使用した場合でも、すべての環境で動作します。
それでも機能しない場合は、コードをデバッグする必要があります。
ご返信ありがとうございます。
ソースをデバッグします。
ところで、xxx@yyy.com のような電子メールのユーザー名はテストしましたか?