הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   קבלת מספר התוצאות בגוגל ב PHP (https://hosts.co.il/forums/showthread.php?t=82269)

hi_sorie 14-05-10 12:27

ציטוט:

נכתב במקור על ידי Baku (פרסם 764035)
מה פתאום ניצן.
זה שקר! זה צריך לקחת 3 שעות..

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

לגבי ניצן,
השיטה שלך נכונה, וכתבתי את זה מלמעלה אבל גם שלי, ולי לקח דקה וחצי :)

PHP קוד:

<?
$init 
file_get_contents("http://www.google.co.il/search?hl=iw&source=hp&ie=windows-1255&q=".$_GET["query"]."&meta=");
preg_match_all("/(<b.*>)(\w.*)(<\/b>)/isxmU"$init $arrayPREG_SET_ORDER);
print(
$array[4][2]); 
?>

הנה לך קוד לבדיקה : http://194.90.34.35/zzz.php?query=blabla
פלט : 12,400,000
פלט של גוגל : http://www.google.co.il/#hl=iw&q=bla...d74c05f45ef504

אותו דבר.

אצלי 3 שורות - אפשר לצמצם ל 2 ;)

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

Erez | TrustMedia.co.il 14-05-10 12:35

ציטוט:

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

לגבי ניצן,
השיטה שלך נכונה, וכתבתי את זה מלמעלה אבל גם שלי, ולי לקח דקה וחצי :)

PHP קוד:

<?
$init 
file_get_contents("http://www.google.co.il/search?hl=iw&source=hp&ie=windows-1255&q=".$_GET["query"]."&meta=");
preg_match_all("/(<b.*>)(\w.*)(<\/b>)/isxmU"$init $arrayPREG_SET_ORDER);
print(
$array[4][2]); 
?>

הנה לך קוד לבדיקה : http://194.90.34.35/zzz.php?query=blabla
פלט : 12,400,000
פלט של גוגל : http://www.google.co.il/#hl=iw&q=bla...d74c05f45ef504

אותו דבר.

אצלי 3 שורות - אפשר לצמצם ל 2 ;)

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

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

hi_sorie 14-05-10 12:39

ציטוט:

נכתב במקור על ידי WiPi (פרסם 764052)

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

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

אפשר גם ללכת לפי התגית הספציפית [ resultStats ], אבל אין לי כח לשבת פה להוכיח דברים, הוכחתי מספיק.

חוץ מזה שגם כתובות של API משתנות, במיוחד אצל גוגל, כמו הכתובת שנתנה את ה PR של העמוד, גם עשו את זה במיוחד למפתחים ושינו את הכתובת.

על אותו עיקרון.

בכל מראה resultStats זה ה ID איפה שמופיע התוצאות לא נראה לי סביר שזה השתנה.

Shay Ben Moshe 14-05-10 12:59

חי, אולי תודה בזה שהשיטה היותר טובה היא של ניצן.
מה גם שבשימוש בfile_get_contents ולא בcurl אפשר לעשות את זה גם בשורה אחת:
PHP קוד:

echo json_decode(file_get_contents('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q='.urlencode($_GET["query"])))->responseData->cursor->estimatedResultCount

השיטה הזו (ושל ניצן) יותר עמידה, אתה יכול להמשיך ולהתווכח אבל זה המצב.

ביצעתי גם השוואת מהירות. הרצתי את הקודים בלופ (for, מi = 0 עד 10 אמנם יחסית מעט פעמים אך ביצעתי את הבדיקות מספר פעמים עד שראיתי שהתוצאות עקביות), התוצאות לא מפתיעות.

השיטה של ניצן (משתמשת בCURL) לוקחת עם איזור 2.1117317676544 שניות.
השיטה שלי, שהיא השיטה של ניצן רק בלי CURL ב3.0002479553223 שניות.
השיטה שלך חי שמשתמש בביטוים רגולרים ב5.6993758678436 שניות.

השיטה שלך יותר איטית, פחות עמידה לשינויים, לא יותר קצרה ופשוט לא.

IgalSt 14-05-10 16:54

ציטוט:

נכתב במקור על ידי Shay Falador (פרסם 764057)
חי, אולי תודה בזה שהשיטה היותר טובה היא של ניצן.
מה גם שבשימוש בfile_get_contents ולא בcurl אפשר לעשות את זה גם בשורה אחת:
PHP קוד:

echo json_decode(file_get_contents('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q='.urlencode($_GET["query"])))->responseData->cursor->estimatedResultCount

השיטה הזו (ושל ניצן) יותר עמידה, אתה יכול להמשיך ולהתווכח אבל זה המצב.

ביצעתי גם השוואת מהירות. הרצתי את הקודים בלופ (for, מi = 0 עד 10 אמנם יחסית מעט פעמים אך ביצעתי את הבדיקות מספר פעמים עד שראיתי שהתוצאות עקביות), התוצאות לא מפתיעות.

השיטה של ניצן (משתמשת בCURL) לוקחת עם איזור 2.1117317676544 שניות.
השיטה שלי, שהיא השיטה של ניצן רק בלי CURL ב3.0002479553223 שניות.
השיטה שלך חי שמשתמש בביטוים רגולרים ב5.6993758678436 שניות.

השיטה שלך יותר איטית, פחות עמידה לשינויים, לא יותר קצרה ופשוט לא.

קודם כל Like


לא תארתי לעצמי שהדיון הזה יגיע לוויכוח כזה.

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

לדעתי אם יש כלי שפיתחו במיוחד עבור המטרות שלך, עדיף להשתמש בו.

Shay Ben Moshe 14-05-10 16:59

יגאל, תודה על הLike חח

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

IgalSt 14-05-10 17:16

אני מסכים איתך לחלוטין.
כבר כתבתי באחת התגובות הראשונות שלי בדיון הזה שבסופו של דבר כולם פה כדי ללמוד (ו/או לקדם את העסקים שלהם).
בכל אופן, אני תמיד שמח ללמוד דרכים ושיטות חדשות.
אני מפתח ASP ולא PHP, כך שאני לא יודע לגבי השיטה שלך או של ניצן.
בכל אופן, יישמתי משהו דומה ב-ASP וזה עבד מעולה לצרכים שלי.
במיוחד שהייתי צריך לפנות ל-API של ויקיפדיה אחרי שאני מקבל תוצאות מה-API של גוגל, אז היה חשוב לי שהקוד יהיה יעיל במידה מסויימת כי זה היה סקריפט שרץ על הרבה בקשות בהפרשים קצרים והיה צריך להיות מהיר יחסית :)

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

hi_sorie 14-05-10 17:24

הקוד שלך לא נכון,

למילה blabla יש 12,800,000 תוצאות לפי הדף של גוגל.

הקוד שלך פולט : 1460000
שלי פולט : 12,800,000

למה?

Shay Ben Moshe 14-05-10 19:17

חי, זה תלוי לאן לאן הפנייה ניגשת (הכוונה לאיזה google, באיזה שפה וכדומה). שלי ניגשת בטח בצורה שונה משלך, כל זה ניתן להתאים על ידי הפרמטרים של הGET..
אני לא בקיא יותר מדי בAPI הזה אז אני לא רוצה להגיד דברים שאני לא יודע לגביהם.

IgalSt 14-05-10 19:25

גוגל שונה, כמות שונה:
http://my.jetscreenshot.com/2411/m_2...yvrn-329kb.jpg

מה גם לפעמים במהלך הדפדפוף הכמויות יכולות להשתנות כאשר מגיעים לעמודים 3,4,5 או יותר (בהתאם לכמות).

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

יהיה יותר חכם לבצע את הבדיקה על ביטוי קצת פחות נפוץ או על site: ולראות את ההבדלים בין ה-API לתוצאות של הגוגל שמיועד לגולש

עריכה:
אגב, שימו לב לכך שלדוגמא ברוסית גוגל תרגם את ה-blabla לתעתיק הרוסי של זה: Бла-Бла-Бла ואף הוסיף את המקפים וחזרה נוספת על ה-bla


כל הזמנים הם GMT +2. הזמן כעת הוא 02:13.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ