כלים ללכידה ולהמרה של האינטרנט
הקהילה המקוונת של GrabzIt

זרוק שגיאה כאשר אני מריץ הדגמה על ידי python

שאל שאלות הנוגעות לכלי מגרד האינטרנט של GrabzIt. למשל כיצד להשתמש במגרד האינטרנט וב- API לחילוץ נתונים מדפי אינטרנט, תמונות או ממסמכי PDF.

שְׁגִיאָה:

Traceback (השיחה האחרונה אחרונה):

  קובץ "GrabzItClient.py", שורה 6, ב

    GrabzIt.SaveTo("documents/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)

  קובץ "C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py", שורה 223, ב-_take

    החזר 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", שורה 629, ב-HTTPPost

    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", שורה 1026, ב-_send_output

    self.send(msg)

  קובץ "C:\Program Files\Python36\lib\http\client.py", שורה 964, ב- send

    self.connect()

  קובץ "C:\Program Files\Python36\lib\http\client.py", שורה 936, ב-connect

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

  קובץ "C:\Program Files\Python36\lib\socket.py", שורה 704, ב-create_connection

    עבור res ב-getaddriinfo(מארח, יציאה, 0, SOCK_STREAM):

  קובץ "C:\Program Files\Python36\lib\socket.py", שורה 743, ב-getaddriinfo

    עבור res ב-_socket.getaddrinfo(מארח, יציאה, משפחה, סוג, פרוטו, דגלים):

socket.gaierror: [שגיאה 11001] getaddriinfo נכשל

 

מקור: (התקנתי GrabzIt וקיבלתי מפתח אפליקציה וסוד אפליקציה)

מ-GrabzIt ייבוא ​​GrabzItClient

 

grabzIt = GrabzItClient.GrabzItClient(APPLICATION KEY, APPLICATION SECRET)

GrabzIt.HTMLToDOCX(" שלום עולם! ") 

GrabzIt.SaveTo("documents/result.docx") 

 

אתה יכול להגיד לי מה עלי לעשות?

נשאל על ידי אנונימי ב-21 באוגוסט 2018

ברוכים הבאים לקהילה!

בדרך כלל א socket.gaierror: [שגיאה 11001] getaddriinfo נכשל נגרמת כאשר הקוד נקרא מאחורי חומת אש או פרוקסי. אנא ודא שלאפליקציה יש גישה ליציאה 80.

ענה על ידי GrabzIt Support ב-21 באוגוסט 2018

תודה לך על התשובה.

כן, זו הבעיה של פרוקסי. זה פועל בסדר כשאני משנה את המחשב השני שאין לו פרוקסי.

איך זה יכול לעבוד עם פרוקסי?

ענה על ידי אנונימי ב-21 באוגוסט 2018

זו תהיה תכונה חדשה. אנו מחפשים אם נוכל לשנות את לקוח Python כך שיאפשר שימוש בשרתי פרוקסי.

אם זה אפשרי נחזור אליך עם תיקון. אתה יכול לנסות בעצמך אם תרצה שכן כל הלקוחות שלנו הם קוד פתוח: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

ענה על ידי GrabzIt Support ב-21 באוגוסט 2018

הוספנו את התכונה החדשה. פשוט הורד את הקובץ GrabzItClient.py והחלף את העותק שלך מכאן: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

לאחר מכן תוכל להגדיר את כתובת ה-proxy של שרת ה-proxy שלך באמצעות שיטת SetLocalProxy החדשה, לדוגמה:

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

בבקשה תן לנו עכשיו איך זה הולך ונעשה מהדורה חדשה בקרוב!

ענה על ידי GrabzIt Support ב-21 באוגוסט 2018

תודה לך על התשובה.

החלפתי את GrabzItClient.py ושיניתי את המקור שלי:

 

 

grabzIt = GrabzItClient.GrabzItClient(APPLICATION KEY, APPLICATION SECRET)

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

GrabzIt.HTMLToDOCX(" שלום עולם! ") 

GrabzIt.SaveTo("documents/result.docx") 

 

מִשׁתַמֵשׁ:xxx@jp.xxxxx.com

סיסמא:יאייייייייי

שרת פרוקסי:zzz.proxy.zzz.zzzzzzz.com

נָמָל:8080

 

הודעת שגיאה:

Traceback (השיחה האחרונה אחרונה):
  קובץ "GrabzIt_test.py", שורה 54, ב
    GrabzIt.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)
  קובץ "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", שורה 463, ב-_take
    החזר 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", שורה 1307, ב-HTTPPost
    headers['Proxy-Authorization'] = 'Basic ' + base64.b64encode(auth)
  קובץ "C:\Program Files\Python36\lib\base64.py", שורה 58, ב-b64encode
    מקודד = binascii.b2a_base64(s, newline=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

סליחה, יכול להיות שהגדרתי את פרוקסי הלא נכון.

שיניתי את ה-proxy ל-"http://the_other_proxy_server:port" והודעת השגיאה הפכה:

Traceback (השיחה האחרונה אחרונה):
  קובץ "GrabzIt_test.py", שורה 54, ב
    GrabzIt.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)
  קובץ "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", שורה 463, ב-_take
    החזר 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", שורה 1327, ב-HTTPPost
    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", שורה 1026, ב-_send_output
    self.send(msg)
  קובץ "C:\Program Files\Python36\lib\http\client.py", שורה 964, ב- send
    self.connect()
  קובץ "C:\Program Files\Python36\lib\http\client.py", שורה 940, ב-connect
    self._tunnel()
  קובץ "C:\Program Files\Python36\lib\http\client.py", שורה 919, ב-_tunnel
    message.strip()))
OSError: חיבור המנהרה נכשל: 407 אימות פרוקסי נדרש

ענה על ידי אנונימי ב-22 באוגוסט 2018

עליך לציין את שם המשתמש והסיסמה שלך כך: http://username:password@example.com:12335

ענה על ידי GrabzIt Support ב-22 באוגוסט 2018

כן, ציינתי את שם המשתמש והסיסמה שלי (שאלה ביום רביעי, 22 באוגוסט, 2018 09:34:43) כמו:

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

שם המשתמש הוא כתובת אימייל (xxx@jp.xxxxx.com) אז שיניתי ל-xxx%40jp.xxxxx.com

אבל זו אותה הודעת שגיאה:TypeError: נדרש אובייקט דמוי בתים, לא 'str'

ענה על ידי אנונימי ב-22 באוגוסט 2018

סליחה, פספסתי את התגובה הקודמת שלך. אני חושב שזו בעיה של Python 3 ושחררתי תיקון שאמור לפתור את השגיאה. בבקשה האם תוכל לעדכן שוב את GrabzItClient.py מ: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

ענה על ידי GrabzIt Support ב-22 באוגוסט 2018

החלפתי קובץ python ומצאתי הודעת שגיאה חדשה:

Traceback (השיחה האחרונה אחרונה):

  קובץ "GrabzIt_test.py", שורה 54, ב

    GrabzIt.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)

  קובץ "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", שורה 232, ב-_take

    החזר 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", שורה 661, ב-HTTPPost

    headers['Proxy-Authorization'] = 'בסיסי ' + encodedAuth

TypeError: חייב להיות str, לא בתים

ענה על ידי אנונימי ב-22 באוגוסט 2018

אוקיי, פיענחנו את זה into ascii. אנחנו לא משתמשים ב-Python 3, וזו הסיבה שזה תפס אותנו. אנא עדכן את הקוד שלך מכאן: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

מכיוון שזהו קוד פתוח, אל תהסס לנפות באגים ולבצע כל שיפורים שתרצה ב-Github. מכיוון שאין לנו גישה להגדרות שלך.

ענה על ידי GrabzIt Support ב-22 באוגוסט 2018

רב תודות על עזרתך.

OSError: חיבור המנהרה נכשל: 407 אימות פרוקסי נדרש

אני אנסה לבצע ניפוי באגים. 

ענה על ידי אנונימי ב-22 באוגוסט 2018

אנו חושבים שאנו יודעים מה הבעיה, אולם הדבר ידרוש כתיבה מחדש של חלק מהקוד. אז ניצור איתך קשר בסיום. בתקווה בעוד 24 שעות.

ענה על ידי GrabzIt Support ב-22 באוגוסט 2018

אני מאמין שפתרנו את הבעיה! אתה יכול לקבל את הגרסה העדכנית ביותר כאן: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

ענה על ידי GrabzIt Support ב-22 באוגוסט 2018

תודה על התשובה.

הודעת שגיאה חדשה:

Traceback (השיחה האחרונה אחרונה):
  קובץ "GrabzIt_test.py", שורה 54, ב
    GrabzIt.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)
  קובץ "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", שורה 231, ב-_take
    החזר 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", שורה 629, ב-HTTPPost
    h = self._getConnection()
  קובץ "C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py", שורה 679, ב-_getConnection
    h.putheader('proxy-authorization', 'Basic ' + encodedAuth)
  קובץ "C:\Program Files\Python36\lib\http\client.py", שורה 1201, ב-putheader
    להעלות את CannotSendHeader()
http.client.CannotSendHeader

 

ענה על ידי אנונימי ב-22 באוגוסט 2018

ביצענו כמה שיפורים קלים ב: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

ובדקתי את זה ב-Python 2.7, 3.4 ו-3.6 וזה עובד בכל הסביבה, עם ובלי פרוקסי ועם פרוקסי מורשים.

אם זה עדיין לא עובד בשבילך, תצטרך לנפות באגים בקוד.

ענה על ידי GrabzIt Support ב-23 באוגוסט 2018

תודה על תשובתך.

אני אתקן באגים במקור שלי.

אגב, בדקת את שם המשתמש שהוא אימייל כמו xxx@yyy.com ?

ענה על ידי אנונימי ב-23 באוגוסט 2018

לא, לא הייתי צריך לקודד ולפענח כראוי אז אולי זו הבעיה.

ענה על ידי GrabzIt Support ב-23 באוגוסט 2018