웹 캡처 및 변환 도구
GrabzIt의 온라인 커뮤니티

Python으로 데모를 실행하면 오류가 발생합니다.

웹 페이지 또는 HTML을 캡처하거나 변환하는 방법에 대한 질문 into 이미지, CSV, PDF 또는 DOCX 문서 및 비디오 변환 방법 into 애니메이션 GIF는 API를 사용합니다.

오류:

추적 (최근 호출 마지막) :

  파일 "GrabzItClient.py", 6행,

    그랩즈잇.SaveTo("문서/result.docx")

  파일 "C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py", 라인 235, SaveTo

    아이디 = 본인.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)))

  HTTPPost의 파일 "C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py", 629행

    h.endheaders()

  파일 "C:\Program Files\Python36\lib\http\client.py", 라인 1234, 엔드헤더

    self._send_output(message_body, 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행, send에 있음

    자기.연결()

  연결에 있는 파일 "C:\Program Files\Python36\lib\http\client.py", 936행

    (self.host,self.port), self.timeout, self.source_address)

  create_connection의 파일 "C:\Program Files\Python36\lib\socket.py", 704행

    getaddrinfo(호스트, 포트, 0, SOCK_STREAM)의 res에 대해:

  getaddrinfo의 파일 "C:\Program Files\Python36\lib\socket.py", 743행

    _socket.getaddrinfo(host, port, family, type, proto, flags)의 res에 대해:

소켓.gaierror: [Errno 11001] getaddrinfo 실패

 

출처:(GrabzIt을 설치하고 애플리케이션 키와 애플리케이션 비밀을 얻었습니다)

GrabzIt에서 GrabzItClient 가져오기

 

GrabzIt = GrabzItClient.GrabzItClient(응용 프로그램 키, 응용 프로그램 비밀)

그랩즈잇.HTMLToDOCX(" 안녕하세요 월드! ") 

그랩즈잇.SaveTo("문서/result.docx") 

 

제가 어떻게 해야 하는지 말씀해주실 수 있나요?

21년 2018월 XNUMX일 익명님이 질문하셨습니다.

커뮤니티에 오신 것을 환영합니다!

보통 소켓.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("문서/result.docx") 

 

사용자:xxx@jp.xxxxx.com

비밀번호 :yyyyyyyyyyyyyy

프록시 서버:zzz.proxy.zzz.zzzzzzz.com

포트:8080

 

에러 메시지:

추적 (최근 호출 마지막) :
  파일 "GrabzIt_test.py", 54행,
    그랩즈잇.SaveTo("결과.docx")
  파일 "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", 487행, SaveTo
    아이디 = 본인.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)))
  HTTPPost의 파일 "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", 1307행
    headers['Proxy-Authorization'] = '기본' + base64.b64encode(auth)
  b36encode의 파일 "C:\Program Files\Python64\lib\base58.py", 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
    아이디 = 본인.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)))
  HTTPPost의 파일 "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", 1327행
    h.endheaders()
  파일 "C:\Program Files\Python36\lib\http\client.py", 라인 1234, 엔드헤더
    self._send_output(message_body, 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행, send에 있음
    자기.연결()
  연결에 있는 파일 "C:\Program Files\Python36\lib\http\client.py", 940행
    self._tunnel()
  _tunnel에 있는 파일 "C:\Program Files\Python36\lib\http\client.py", 919행
    message.strip()))
OSError: 터널 연결 실패: 407 프록시 인증 필요

22년 2018월 XNUMX일 익명의 답변

다음과 같이 사용자 이름과 비밀번호를 지정해야 합니다. http://username:password@example.com:12335

22년 2018월 XNUMX일 GrabzIt 지원팀에서 답변함

예, 사용자 이름과 비밀번호를 다음과 같이 지정했습니다(22년 2018월 09일 수요일 오전 34시 43분 XNUMX초에 대한 질문).

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

사용자 이름은 이메일 주소(xxx@jp.xxxxx.com)이므로 xxx%40jp.xxxxx.com으로 변경했습니다.

하지만 같은 오류 메시지입니다: TypeError: a bytes-like object is require, not '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

    아이디 = 본인.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)))

  HTTPPost의 파일 "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", 661행

    headers['Proxy-Authorization'] = '기본' + encodeAuth

TypeError: 바이트가 아닌 문자열이어야 합니다.

22년 2018월 XNUMX일 익명의 답변

좋아, 우리는 그것을 해독했다 int오 아스키. 우리는 Python 3을 사용하지 않기 때문에 이것이 우리를 사로잡았습니다. 여기에서 코드를 업데이트하세요: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

이는 오픈 소스이므로 Github에서 원하는 개선 사항을 디버그하고 커밋할 수 있습니다. 우리는 귀하의 설정에 접근할 수 없기 때문입니다.

22년 2018월 XNUMX일 GrabzIt 지원팀에서 답변함

당신의 도움에 많은 감사드립니다.

OSError: 터널 연결 실패: 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
    아이디 = 본인.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)))
  HTTPPost의 파일 "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", 629행
    h = self._getConnection()
  _getConnection의 파일 "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", 679행
    h.putheader('proxy-authorization', '기본' + encodeAuth)
  파일 "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 지원팀에서 답변함