Tools om het web vast te leggen en te converteren
GrabzIt is een online community

Er treedt een fout op wanneer ik een demo van Python uitvoer

Stel vragen met betrekking tot de Web Scraper Tool van GrabzIt. Zoals hoe de webschraper en API te gebruiken om gegevens uit webpagina's, afbeeldingen of PDF-documenten te extraheren.

fout:

Hertraceren (meest recente oproep als laatste)

  Bestand "GrabzItClient.py", regel 6, in

    pak het.SaveTo("documenten/resultaat.docx")

  Bestand "C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py", regel 235, in SaveTo

    ID = zelf.Save()

  Bestand "C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py", regel 209, in Save

    obj = zelf._take(sig, callBackURL)

  Bestand "C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py", regel 223, in _take

    return self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))

  Bestand "C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py", regel 629, in HTTPPost

    h.endheaders()

  Bestand "C:\Program Files\Python36\lib\http\client.py", regel 1234, in eindheaders

    self._send_output(message_body, encode_chunked=encode_chunked)

  Bestand "C:\Program Files\Python36\lib\http\client.py", regel 1026, in _send_output

    zelf.verzenden(msg)

  Bestand "C:\Program Files\Python36\lib\http\client.py", regel 964, in verzending

    zelf.connect()

  Bestand "C:\Program Files\Python36\lib\http\client.py", regel 936, in connect

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

  Bestand "C:\Program Files\Python36\lib\socket.py", regel 704, in create_connection

    voor res in getaddrinfo(host, poort, 0, SOCK_STREAM):

  Bestand "C:\Program Files\Python36\lib\socket.py", regel 743, in getaddrinfo

    voor res in _socket.getaddrinfo (host, poort, familie, type, proto, vlaggen):

socket.gaierror: [Errno 11001] getaddrinfo mislukt

 

bron:(Ik heb GrabzIt geïnstalleerd en kreeg APPLICATIESLEUTEL en APPLICATIEGEHEIM)

van GrabzIt importeer GrabzItClient

 

grabzIt = GrabzItClient.GrabzItClient(TOEPASSINGSSLEUTEL, TOEPASSINGSGEHEIM)

pak het.HTMLToDOCX(" Hallo Wereld! ") 

pak het.SaveTo("documenten/resultaat.docx") 

 

kunt u mij vertellen wat ik moet doen?

Gevraagd door anoniem op 21 augustus 2018

Welkom bij de community!

Meestal een socket.gaierror: [Errno 11001] getaddrinfo mislukt wordt veroorzaakt wanneer de code wordt aangeroepen van achter een firewall of proxy. Zorg ervoor dat de applicatie toegang heeft tot poort 80.

Beantwoord door GrabzIt-ondersteuning op 21 augustus 2018

Bedankt voor het antwoord.

Ja, het is een proxyprobleem. Het werkt prima als ik de andere pc verander die geen proxy heeft.

Hoe kan het werken met proxy?

Beantwoord door anoniem op 21 augustus 2018

Dit wordt een nieuwe functie. We kijken of we de Python-client kunnen wijzigen om het gebruik van proxyservers mogelijk te maken.

Als het mogelijk is, nemen we contact met u op met een oplossing. Je kunt het zelf proberen als je wilt, want al onze klanten zijn open source: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

Beantwoord door GrabzIt-ondersteuning op 21 augustus 2018

We hebben de nieuwe functie toegevoegd. Download gewoon het GrabzItClient.py-bestand en vervang uw exemplaar vanaf hier: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

Vervolgens kunt u de proxy-URL van uw proxyserver instellen met behulp van de nieuwe SetLocalProxy-methode, bijvoorbeeld:

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

Laat ons nu weten hoe het gaat en we zullen binnenkort een nieuwe release doen!

Beantwoord door GrabzIt-ondersteuning op 21 augustus 2018

Bedankt voor het antwoord.

Ik verving de GrabzItClient.py en veranderde mijn bron:

 

 

grabzIt = GrabzItClient.GrabzItClient(TOEPASSINGSSLEUTEL, TOEPASSINGSGEHEIM)

grabzIt.SetLocalProxy("http://xxx@jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzz.com:8080")

pak het.HTMLToDOCX(" Hallo Wereld! ") 

pak het.SaveTo("documenten/resultaat.docx") 

 

gebruiker:xxx@jp.xxxxx.com

wachtwoord:jjjjjjj

proxy server:zzz.proxy.zzz.zzzzzzz.com

haven:8080

 

foutmelding:

Hertraceren (meest recente oproep als laatste)
  Bestand "GrabzIt_test.py", regel 54, in
    pak het.SaveTo("resultaat.docx")
  Bestand "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", regel 487, in SaveTo
    ID = zelf.Save()
  Bestand "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", regel 435, in Save
    obj = zelf._take(sig, callBackURL)
  Bestand "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", regel 463, in _take
    return self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
  Bestand "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", regel 1307, in HTTPPost
    headers['Proxy-Authorization'] = 'Basis' + base64.b64encode(auth)
  Bestand "C:\Program Files\Python36\lib\base64.py", regel 58, in b64encode
    gecodeerd = binascii.b2a_base64(s, newline=False)
TypeError: een bytesachtig object is vereist, niet 'str'

 

dezelfde foutmelding, zelfs ik veranderde SetLocalProxy van "http://xxx@jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzzz.com:8080" naar "http://xxx%40jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzzz.com:8080"

 

Beantwoord door anoniem op 22 augustus 2018

sorry, misschien heb ik de verkeerde proxy ingesteld.

Ik veranderde de proxy in "http://the_other_proxy_server:port" en de foutmelding werd:

Hertraceren (meest recente oproep als laatste)
  Bestand "GrabzIt_test.py", regel 54, in
    pak het.SaveTo("resultaat.docx")
  Bestand "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", regel 487, in SaveTo
    ID = zelf.Save()
  Bestand "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", regel 435, in Save
    obj = zelf._take(sig, callBackURL)
  Bestand "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", regel 463, in _take
    return self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
  Bestand "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", regel 1327, in HTTPPost
    h.endheaders()
  Bestand "C:\Program Files\Python36\lib\http\client.py", regel 1234, in eindheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  Bestand "C:\Program Files\Python36\lib\http\client.py", regel 1026, in _send_output
    zelf.verzenden(msg)
  Bestand "C:\Program Files\Python36\lib\http\client.py", regel 964, in verzending
    zelf.connect()
  Bestand "C:\Program Files\Python36\lib\http\client.py", regel 940, in connect
    zelf._tunnel()
  Bestand "C:\Program Files\Python36\lib\http\client.py", regel 919, in _tunnel
    bericht.strip()))
OSError: Tunnelverbinding mislukt: 407 Proxyverificatie vereist

Beantwoord door anoniem op 22 augustus 2018

U moet uw gebruikersnaam en wachtwoord als volgt opgeven: http://username:password@example.com:12335

Beantwoord door GrabzIt-ondersteuning op 22 augustus 2018

Ja, ik heb mijn gebruikersnaam en wachtwoord opgegeven (vraag op woensdag 22 augustus 2018 09:34:43 AM) zoals:

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

gebruikersnaam is e-mailadres (xxx@jp.xxxxx.com), dus ik ben veranderd in xxx%40jp.xxxxx.com

maar het is dezelfde foutmelding:TypeError: een bytesachtig object is vereist, niet 'str'

Beantwoord door anoniem op 22 augustus 2018

Sorry, ik heb je eerdere reactie gemist. Ik denk dat dit een Python 3-probleem is en heb een oplossing uitgebracht die de fout zou moeten oplossen. Kunt u GrabzItClient.py opnieuw bijwerken vanaf: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

Beantwoord door GrabzIt-ondersteuning op 22 augustus 2018

Ik heb het Python-bestand vervangen en vind een nieuwe foutmelding:

Hertraceren (meest recente oproep als laatste)

  Bestand "GrabzIt_test.py", regel 54, in

    pak het.SaveTo("resultaat.docx")

  Bestand "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", regel 244, in SaveTo

    ID = zelf.Save()

  Bestand "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", regel 218, in Save

    obj = zelf._take(sig, callBackURL)

  Bestand "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", regel 232, in _take

    return self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))

  Bestand "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", regel 661, in HTTPPost

    headers['Proxy-Authorization'] = 'Basis' + encodedAuth

TypeError: moet str zijn, geen bytes

Beantwoord door anoniem op 22 augustus 2018

Oké, we hebben het gedecodeerd into ascii. We gebruiken Python 3 niet, daarom viel het ons op. Update uw code vanaf hier: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

Omdat dit open source is, voel je vrij om fouten te debuggen en eventuele verbeteringen door te voeren naar Github. Omdat wij geen toegang hebben tot uw installatie.

Beantwoord door GrabzIt-ondersteuning op 22 augustus 2018

Hartelijk bedankt voor je hulp.

OSError: Tunnelverbinding mislukt: 407 Proxyverificatie vereist

Ik zal proberen te debuggen. 

Beantwoord door anoniem op 22 augustus 2018

We denken dat we weten wat het probleem is, maar hiervoor moet een deel van de code opnieuw worden geschreven. We nemen dus contact met u op als dit klaar is. Hopelijk binnen 24 uur.

Beantwoord door GrabzIt-ondersteuning op 22 augustus 2018

Ik geloof dat we het probleem hebben opgelost! Je kunt de nieuwste versie hier downloaden: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

Beantwoord door GrabzIt-ondersteuning op 22 augustus 2018

Bedankt voor het antwoord.

Nieuwe foutmelding:

Hertraceren (meest recente oproep als laatste)
  Bestand "GrabzIt_test.py", regel 54, in
    pak het.SaveTo("resultaat.docx")
  Bestand "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", regel 243, in SaveTo
    ID = zelf.Save()
  Bestand "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", regel 217, in Save
    obj = zelf._take(sig, callBackURL)
  Bestand "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", regel 231, in _take
    return self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
  Bestand "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", regel 629, in HTTPPost
    h = zelf._getConnection()
  Bestand "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", regel 679, in _getConnection
    h.putheader('proxy-autorisatie', 'Basic' + encodedAuth)
  Bestand "C:\Program Files\Python36\lib\http\client.py", regel 1201, in putheader
    verhogen CannotSendHeader()
http.client.CannotSendHeader

 

Beantwoord door anoniem op 22 augustus 2018

We hebben enkele kleine verbeteringen aangebracht aan: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

En heb het getest in Python 2.7, 3.4 en 3.6 en het werkt in alle omgevingen, met en zonder proxy's en met geautoriseerde proxy's.

Als het nog steeds niet voor u werkt, moet u de code debuggen.

Beantwoord door GrabzIt-ondersteuning op 23 augustus 2018

Bedankt voor je antwoord.

Ik zal mijn bron debuggen.

Heb je trouwens de gebruikersnaam getest, namelijk E-mail, zoals xxx@yyy.com?

Beantwoord door anoniem op 23 augustus 2018

Nee, dat wist ik niet, dat zou correct gecodeerd en gedecodeerd moeten worden, dus misschien is dat het probleem.

Beantwoord door GrabzIt-ondersteuning op 23 augustus 2018