שימוש בAPI למציאת מיקוד
-
אהלן,
בשאלה הבאה אחד המשתמשים פרסם את התשובה הבאה:https://services.israelpost.co.il/zip_data.nsf/SearchZip?OpenAgent&Location=<עיר>&POB=&Street=<רחוב>&House=<מספר בניין>&Entrance=<כניסה>
כשאני מריץ את השאילתה בדפדפן זה עובד לי כמו שצריך ומראה לי את התוצאה הרצויה, אבל כשאני מנסה להריץ את זה בפייתון באמצעות קריאה של ה- API אני מקבל שגיאה והתוכנית קורסת.
אשמח אם מישהו יוכל לעזור לי ולהראות איך אני יכול לכתוב את זה בפייתון,
תודה. -
@segev_gr באופן כללי הכי חשוב זה מה השגיאה, אבל גם יעזור אם תצרף קוד קצר.
אבל במקרה הזה קל לנסות לבד, והרצתי את זה לבד.
ראשית כל שמתי את זה בדפדפן והסתכלתי מה קורה בכלי המפתחים ברשת (F12), והכל היה נראה טוב. הרצתי את השאילתה בC# ואכן הייתה תשובה של 301 עם מסך קאפצ'ה.
התחלתי להוסיף כותרות של דפדפן קלאסיות, ומה שראיתי שמשנה זה הכותרת Accept-Language, ברגע ששמתי את זה זה עבד. -
@dovid
היי,
הוספתי את השורה:
'Accept-Language': 'he'
בפעם הראשונה שניסיתי זה עבד לי והחזיר לי דף HTML שב- body שלו היה את המיקוד, אבל כשניסיתי להריץ שוב הוא זרק לי שוב את אותה השגיאה של מקודם.
זאת לא שגיאה במובן של פייתון, הוא פשוט החזיר לי דף HTML שבכותרת שלו כתוב ShieldSquare Captcha ובתיאור הוא אומר שהם חושבים שאני רובוט.מוסיף פה את הקוד שלי:
import requests url = "https://services.israelpost.co.il/zip_data.nsf/SearchZip?OpenAgent&Location=תל אביב&POB=&Street=העליה&House=3" payload={} headers = { 'Accept-Language': 'he', 'Cookie': '__uzma=753ba75c-fd68-40a7-bc25-2fce8a20e690; __uzmb=1669220736; __uzmc=737183761774; __uzmd=1669661347; __uzme=9917' } response = requests.request("GET", url, headers=headers, data=payload) print(response.text)
בפעם הראשונה זה עבד ואח"כ כבר לא עובד יותר..