Anonim

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

התעמקתי ב- iframe שנוצר על ידי הסבר על כפתורים והגעתי לכתובת האתר הזו:
http: //pinit-cdn..com/pinit.html? url = http: //www.allrecipes.com
ובכן, זה היה קל, המספר מוצג ממש שם ב- Count ID של ה- div CountBubble. אז גזלתי את זה והשתמשתי בספריית ה- php ה- simple_html_dom כדי לנתח. למרות זאת הוא המשיך להחזיר 0. אופס! מספר זה משתנה באמצעות JavaScript לאחר טעינת הדף. היה צריך לראות את המקור במקום לבדוק את הרכיב. אז אני צופה במקור ויש חתיכת הקוד הנחמדה הזו רק יושבת שם להנאת התכנות שלי.

snode.setAttribute ('src', '//api..com/v1/urls/count.json?callback=receiveCount&url='+targetUrl);

מכאן, אני אוסף את כתובת האתר הבאה כנראה ימשוך את הנתונים הדרושים לי,
http: //api..com/v1/urls/count.json? callback = ontvangCount & url = http: //www.allrecipes.com
המציג:

ontvangCount ({"count": 1148, "url": "http://www.allrecipes.com"})

אז, נתוני ה- json שלהם עטופים בשיחת פונקציה מממשק ה- API שהם טרם פרסמו באופן פומבי. כמה נוח. להלן הקטע הקוד שאתה צריך בכדי להפוך את העבודה הזו ל- PHP. עליך להפעיל את CURL בשרת שלך.

$ pinurl = "http: //api..com/v1/urls/count.json? callback = ontvangCount & url ="; $ targeturl = "http://www.allrecipes.com/"; $ pinurl. = $ brandurl; $ html = pull_html ($ pinurl); // קבל את ה- HTML דרך פונקציה שמתקשרת ל- CURL $ html = str_replace ("ontvangCount (", "", $ html); // הסר את הפונקציה קוראת את הנתונים עטופים ב- $ html = substr ($ html, "", -1); $ = json_decode ($ html); // המרה מ- json למערך php $ pincount = $ -> count; הד $ $ pincount; // יש את פונקציית המספר pull_html ($ url) {$ ch = curl_init () ; curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch, CURLOPT_CONNECTTIMEOUT, 10); $ html = curl_exec ($ ch); curl_close ($ cht) ;}

כפי שאתה יכול לראות, אנו שולפים את הנתונים בסלסול ואז שולחים את שיחת הפונקציה העוטפת את נתוני ה- json. ואז זה רק עניין של שימוש ב- json_decode כדי להפוך את נתוני ה- json למערך php. וואלה! הכל בוצע. ביצעתי עד כה כ -3, 000 כתובות URL והנתונים לא חזרו שום בעיה. לפעמים היה קצת איטי, לא בטוח אם על ידי עיצוב או על ידי. זה עדיין מושך ואוחסן את הנתונים בזמן שאני מקליד את זה. אני בטוח שבשלב מסוים תהיה מגבלת קצב כלשהי, אך עד כה לא נתקלתי בקירות. אולי זה אפילו לא אמור להיות מוסתר מפני מתכנתים, אבל עד כמה שידוע לי אין תמיכה רשמית אלא אם כן אתה אחד המו"לים הבודדים שהם בחרו לעבוד איתם.

מקבל מספר סיכות פינטרס ב- php