Webをキャプチャして変換するツール
GrabzItのオンラインコミュニティ

Pythonでデモを実行するとエラーがスローされます

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」) 

 

どうすればいいのか教えていただけますか?

21 年 2018 月 XNUMX 日に匿名による質問

コミュニティへようこそ!

通常、 socket.gaierror: [Errno 11001] getaddrinfo が失敗しました コードがファイアウォールまたはプロキシの背後から呼び出されたときに発生します。 アプリケーションがポート 80 にアクセスできることを確認してください。

21 年 2018 月 XNUMX 日に GrabzIt サポートが回答

答えてくれてありがとう。

はい、プロキシの問題です。プロキシを持たない他のPCに変更すると正常に動作します。

プロキシではどのように機能しますか?

21 年 2018 月 XNUMX 日に匿名で回答

これは新しい機能になります。 プロキシ サーバーを使用できるように Python クライアントを変更できるかどうかを検討しています。

可能であれば、修正してご連絡いたします。 当社のクライアントはすべてオープンソースなので、必要に応じて自分で試してみることもできます: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

21 年 2018 月 XNUMX 日に GrabzIt サポートが回答

新しい機能を追加しました。 GrabzItClient.py ファイルをダウンロードし、ここからコピーを置き換えるだけです: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

次に、新しい SetLocalProxy メソッドを使用して、プロキシ サーバーのプロキシ URL を設定できます。次に例を示します。

grabzIt.SetLocalProxy("http://123.123.123.123:21231")

進捗状況を教えてください。すぐに新しいリリースを行う予定です。

21 年 2018 月 XNUMX 日に GrabzIt サポートが回答

答えてくれてありがとう。

交換しました 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"

 

22 年 2018 月 XNUMX 日に匿名で回答

申し訳ありませんが、間違ったプロキシを設定した可能性があります。

プロキシを「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 プロキシ認証が必要です

22 年 2018 月 XNUMX 日に匿名で回答

次のようにユーザー名とパスワードを指定する必要があります。 http://username:password@example.com:12335

22 年 2018 月 XNUMX 日に GrabzIt サポートから回答

はい、次のようにユーザー名とパスワードを指定しました (22 年 2018 月 09 日水曜日 34:43:XNUMX AM の質問):

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

ユーザー名はメールアドレス(xxx@jp.xxxxx.com)なのでxxx%40jp.xxxxx.comに変更しました。

しかし、それは同じエラーメッセージです:TypeError: 'str'ではなく、バイトのようなオブジェクトが必要です

22 年 2018 月 XNUMX 日に匿名で回答

申し訳ありませんが、前の返信を見逃していました。 これは Python 3 の問題であると考えられ、エラーを解決する修正がリリースされました。 https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py から GrabzItClient.py を再度更新してください。

22 年 2018 月 XNUMX 日に GrabzIt サポートから回答

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 である必要があります

22 年 2018 月 XNUMX 日に匿名で回答

OK、デコードできました intアスキー。 私たちは Python 3 を使用していないため、問題が発生しました。 ここからコードを更新してください: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

これはオープンソースなので、自由にデバッグして、必要な改善を Github にコミットしてください。 私たちはあなたの設定にアクセスできないので。

22 年 2018 月 XNUMX 日に GrabzIt サポートから回答

ご協力いただき誠にありがとうございます。

OSエラー: トンネル接続に失敗しました: 407 プロキシ認証が必要です

デバッグしてみます。 

22 年 2018 月 XNUMX 日に匿名で回答

問題が何であるかはわかっていると思いますが、コードの一部を書き直す必要があります。 ですので、完了しましたらご連絡させていただきます。 できれば24時間以内に。

22 年 2018 月 XNUMX 日に GrabzIt サポートから回答

問題は解決したと思います! 最新版はここから入手できます: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

22 年 2018 月 XNUMX 日に GrabzIt サポートから回答

返信いただきありがとうございます。

新しいエラーメッセージ:

トレースバック(最後の最後の呼び出し):
  ファイル「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

 

22 年 2018 月 XNUMX 日に匿名で回答

https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py にいくつかの小さな改善を加えました。

Python 2.7、3.4、および 3.6 でテストしたところ、プロキシの有無にかかわらず、また承認されたプロキシを使用した場合でも、すべての環境で動作します。

それでも機能しない場合は、コードをデバッグする必要があります。

23 年 2018 月 XNUMX 日に GrabzIt サポートが回答

ご返信ありがとうございます。

ソースをデバッグします。

ところで、xxx@yyy.com のような電子メールのユーザー名はテストしましたか?

23 年 2018 月 XNUMX 日に匿名によって回答されました

いいえ、適切にエンコードおよびデコードする必要があるとは思いませんでした。そのため、それが問題なのかもしれません。

23 年 2018 月 XNUMX 日に GrabzIt サポートが回答