14Aug

בקלות לנתח / לחפש מחרוזות שאילתת חיפוש האינטרנט של דף מיומני Apache באמצעות awk php ומקודדים שורת הפקודה לינוקס sed

6 חלקים: השתמש awk ו- sed לנתח קבצי יומן Apache עבור שאילתות חיפוש שהוקלדו המשתמשים בבעיות מוכרות גירסה 2: העיבוד המקדים שורת הפקודה פחות ויותר PHP עיבוד טריקים טיפים ToDo & amp;אזהרות תגובות

זה HowTo יראה לכם כיצד בקלות בשורת הפקודה לינוקס לנתח קבצי יומן Apache כדי לקבל את נתוני השאילתה מחרוזת החיפוש שמשתמשים הקלד למצוא את דף האינטרנט שלך במנוע החיפוש.כללתי GUI חיפוש php וכן לשימוש קל.

היה שימושי זה?כן |אין |אני זקוק לעזרה
תוכן
  • 1 השתמש awk ו- sed לנתח קבצי יומן Apache לחיפוש המשתמש הקליד שאילתות
  • 2 בבעיות מוכרות
  • 3 גרסה 2: העיבוד המקדים שורת הפקודה פחות ועוד עיבוד php
  • 4 ToDo
  • 5 טיפים וטריקים & amp;אזהרות
  • 6 תגובות
מודעות

השתמש awk ו- sed לנתח קבצי יומן Apache לחיפוש המשתמש הקליד שאילתות

הנה קוד הגלם כדי לעשות את העבודה.שים לב TITLE2 $ יש להחליף ידי מה אתה מחפש אבל החללים מוחלפים "\ +".

לדוגמה: "איך למצוא lollypop גדול" יהיה "איך \ + ל \ + למצוא \ + a \ + גדול \ + lollypop"

הסיבה לכך היא כי אני מתכנן להתקשר פונקציה PHP, איפה אנילאכלס TITLE2 $ כפי שתראו בהמשך.יכולתי לשים את egrep

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

חתול /var/log/virtualmin/VisiHow.com_access_log |נתוני #Get מיומן גישת egrep "(q | p) =" |#Use רק רשומות שבהן סביר שאילתות חיפוש sed 's /% 22 / "/ g; s /% 20 / + / g; s / _ / + / g;' | #Do כמה שינויי עיצוב והכי חשוב לשנות את כל החלליםאו מדגיש עד + egrep -אני "$ TITLE2" | #search עבור TITLE2 $ awk '{להדפיס 11 $}' | נתוני החיפוש #extract רק sed 's / p = / q = / ig' | p יאהו #handle = awk -'q =' F '{להדפיס 2 $}' | #grab כל הנתונים שמתחילות באות Q = sed 's / q = // g; s / + / / g; s /% 22 / "/ g; s /% 20/ / g; '|#reformat כדי -d לחתוך פורמט קריא "& amp;"-f 1 |#strip את הפרמטרים האחרים awk '{להדפיס 0 $ "
"}' #add הפסקות הקישור
כי אנחנו מתכננים פלט לדף אינטרנט

היה שימושי זה?כן |אין |אני זקוק לעזרה

== בואו ליצור מעטפת GUI HTML PHP

לכך עכשיו ==

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

queries.php

& lt; title & gt; שאילתות משתמש & lt; / title & gt;& Lt; meta name = "רובוטים" תוכן = "noindex" & gt;

& lt; טופס name = "sform" method = "get" & gt;כותרת חיפוש: & lt; input size = "80" value = "? & Lt; php echo _GET $ [ 'title']; & gt;?"name = "title" type = "text" & gt;& Lt; ערך קלט = "חפש" type = "submit" & gt;רמז: אתה יכול להשתמש בתואר חלקי או אפילו regex כמו & lt; / form & gt; "סמסונג * ניזק."

היה שימושי זה?כן |אין |אני זקוק לעזרה

$ title = $ _GET [ 'title'];$ Title = preg_replace( "/ איך / i", "", כותרת $);TITLE2 $ = str_replace( "", "\ +", הכותרת $);TITLE2 $ = str_replace( "_", "\ +", $ TITLE2);

$ bigcmd = & lt; & lt; & lt; EOF

egrep -i "(q | p) =" |#Use רק רשומות שבהן סביר שאילתות חיפוש sed 's /% 22 / "/ g; s /% 20 / + / g; s / _ / + / g;' | #Do כמה שינויי עיצוב והכי חשוב לשנות את כל החלליםאו מדגיש עד + egrep -i "TITLE2 $" | #search עבור awk TITLE2 '{להדפיס 11 $}' | נתוני החיפוש #extract רק sed 's / p = / q = / ig' | yahoo #handle p = awk -f'q =' '{להדפיס 2 $}' | #grab כל הנתונים שמתחילות באות Q = sed 's / q = // g; s / + / / g; s /% 22 / "/ g; s /% 20 // g; '|#reformat כדי -d לחתוך פורמט קריא "& amp;"-f 1 |#strip את הפרמטרים האחרים awk '{להדפיס 0 $ "
"}' #add הפסקות הקישור
כי אנחנו מתכננים פלט לדף אינטרנט

EOF;

היה שימושי זה?כן |אין |אני זקוק לעזרה

אם "{print

מחפש" title $ "..."( הכותרת $ = "!)";הדפסה "השבוע הנוכחי. ..
";הדפסת `החתול /var/log/virtualmin/visihow.com_access_log |נתוני #Get מן bigcmd $ יומן הגישה `;// אנו תומכים p = מדי, כי yahoo משתמשת כי. .. עוף מוזר lol עבור( $ i = 1; $ i & lt; 6; $ i ++){ print "
i $ בשבוע( S) לפני
";להדפיס `zcat /var/log/virtualmin/visihow.com_access_log.$i.gz |נתוני #Get מן bigcmd $ יומן הגישה `;}

} & gt;

היה שימושי זה?כן |אין |אני זקוק לעזרה

& lt; / EOF

בבעיות מוכרות

grep הוא להרים רשומות עם נתוני הפניות כך הוא חוזר רשומות רצויות.לדוגמה, אם מישהו מחפש "iPhone" ומשתמש היה בדף iPhone מכן לחצו כדי לעבור לדף סמסונג, קוד זה מרים את iPhone מן המפנה ובכך כלולים נתונים אשר שאסור שזה יקרה.אני עובד על גרסה 2, שעושה הרבה יותר יהיה לתקן את הבאג הזה על ידי הזזת הרבה של עיבוד מקדים שורת הפקודה לתוך PHP.הקוד יהיה יותר קהה, אבל ייתן הרבה יותר מידע שימושי ומדויק.

היה שימושי זה?כן |אין |אני זקוק לעזרה

גרסה 2: העיבוד המקדים שורת הפקודה פחות ויותר PHP עיבוד

גרסה זו יש את היתרונות / החסרונות הבאים:

  • פחות שורת הפקודה העיבוד המקדים עוד אמצעי קוד
  • עוד
  • php פירושו יותר מלאה כולל
  • מתעלם בקשות כפולות מרובות מאותו IP
  • ספירת חיפושים מרובים במקום לפרט אותם מספר פעמים
  • הצג במגמת מידע על ידי הצגת הסיכומים שבועי
  • פלט הואב divs לגלילה כדי להקל על הצפייה של
  • ממוין הדפים הפופולריים ידי אורכי שאילתה הסתכם, מתוכם כ אומר הדפים הפופולריים יותר להראות
  • קצת מהיר ומלוכלך JavaScript & amp הראשון;css כדי להפוך את אוטומטי divs להרחיב עבור

& lt צפייה מפורט; title & gt; משתמש שאילתות & lt; / title & gt;& Lt; meta name = "רובוטים" תוכן = "noindex" & gt;

& lt; טופס name = "sform" method = "get" & gt;כותרת חיפוש:? & Lt; input size = "80" value = "& lt; php
אם( strlen( $ _ GET [ 'title']) & gt; 0){
הד _GET $ [ 'title'];
} אחר{
הד "*"; & lt; br = "" type = "text" & gt;} & gt;? "name = "title" / & gt;& Lt; ערך קלט = "חפש" type = "submit" & gt;רמז
: זן * לראות הכל.אתה יכול להשתמש בתואר חלקי או אפילו regex כמו "סמסונג * ניזק." & Lt; / form & gt;

היה שימושי זה?כן |אין |אני זקוק לעזרה

פונקציה sortbylen( $ a, $ b){ strlen בתמורה

( ב $) -strlen( $ a);

} הכותרת

$ = $ _GET [ 'title'];$ Title = preg_replace( "/ איך / i", "", כותרת $);TITLE2 $ = str_replace( "", "\ +", הכותרת $);TITLE2 $ = str_replace( "_", "\ +", $ TITLE2);

$ bigcmd = & lt; & lt; & lt; EOF

egrep -i "(q | p) =" |#Use רק רשומות שבהן סביר שאילתות חיפוש sed 's /% 22 / "/ g; s /% 20 / + / g; s / _ / + / g;' | #Do כמה שינויי עיצוב והכי חשוב לשנות את כל החלליםאו מדגיש כדי awk + '{להדפיס $ 1 "" 7 $ "" 11 $}' | egrep -i "TITLE2 $" #search עבור TITLE2

EOF;

היה שימושי זה כן | לא | אני זקוק לעזרה
?

אם( $ title = "!"){ print

"מחפש" title $ "..."; עבור( $ i = 0; $ i & lt; 6; $ i ++){ if( $ i == 0){ /var/log/virtualmin/visihow.com_access_log searchlogdata = `חתול $ | bigcmd` $;} else{ searchlogdata =` zcat /var/log/virtualmin/visihow.com_access_log.$i.gz $ | bigcmd` $;} $ searchlogarray = להתפוצץ( "\ n", searchlogdata $); foreach( searchlogarray $ כפי sdata $){ = logparts $ להתפוצץ( "", sdata $); $ ip = $ logparts [0]; $ url = $ logparts[1]; preg_match( "/( q | p) =( *).?"( \ & amp; |? $) / ", $ logparts [2], גפרורים $);ss $ = urldecode( התאמות $ [2]);$ Ss = str_replace( "+", "", ss $);אם( (strlen( לקצץ( ss $)) & gt; 3) & amp; & amp;( preg_match( "# http \: \ / \ / # אני", $ ss))!){ // להרחיק url מחיפושים באתראם( ($ ip = $ שפתיים) ||( ss $ = $ LSS)!!){ שפתיים $ = $ ip;$ LSS = $ ss;ssdata $ [ "$ url"] = "ss $ |".;}}} Uasort( $ מערך, 'sortbylen');foreach( ssdata $ כפי $ key = & gt; $ ערך){ $ sarr = להתפוצץ( "|", ערך $);foreach( $ sarr כמו $ s){ if( strlen( $ s) & gt; 0) $ s2 [$ s] ++;} Arsort( s2 $);foreach( s2 $ כפי $ key2 = & gt; VAL2 $){ urldata $ [$ מפתח] [$ i] = "VAL2 $: $ key2
";.stot $ [$ מפתח] [$ i] + = $ VAL2;} מוגדר( s2 $);} מוגדר( ssdata $);foreach}( $ urldata כמו $ url = & gt; $ weekdata){ print " & lt; a target =" _ blank "href =" $ url "& gt; $ url & lt; / a & gt;
";WK $ = 0;... Foreach( $ weekdata בשבוע $){ print "
" $ WK ++ "בשבוע( S) לפני: חיפושים סה"כ =" $ stot [url $] [$ WK-1] "
";.הדפסה "& lt; div onmouseover =" this.style.height = 500 "onmouseout =" this.style.height = 100 "& lt; br =" "& gt; & lt; / div & gt; style = 'רוחב: 800px; גובה: 100 פיקסלים; הגבול: 1px מוצק אפור; overflow: לגלול '& gt; $ בשבוע ";}}

} & gt;

היה שימושי זה?כן |אין |אני זקוק לעזרה

& lt; / EOF

ToDo

מיין לפי אורך השאילתה כמעין משנית, עם

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

טיפים וטריקים & amp;אזהרות

  • הערה: אני תומך p = וכן שקל התקן = כי יאהו להיות העוף המוזר הוא משתמש p =
  • הגרסה 2 php מורכב יותר ואני קידוד מהר כל כך חלק מהמשתניםשמות נבחרים גרועים.בבקשה לא להתלונן כקוד החופשי שלה.אבל אם אתה רוצה לתקן את זה עד ולתעד אותו ולהוסיף אותו לתוך ויקי כמו גרסה 3 זה יהיה פנטסטי:) תעביר את זה הלאה!
  • אם יש לך בעיות עם כל אחד משלבים אלה, לשאול שאלה לקבלת עזרה נוספת, או לפרסם בסעיף ההערות למטה.

תגובות

VisiHow מברך את כל תגובות .אם אינך רוצה להיות אנונימי, לרשום או להתחבר. זה בחינם.




דניאל
מומלצים מחבר
69 מאמרים Started
2,601 סעיף עריכות
24,290 נקודות
דניאל הוא מחבר מומלצים עם VisiHow.דניאל השיג את הרמה של "סגן" עם 24,290 נקודות.דניאל החל 69 מאמרים ועשה 2,601 עריכות מאמר.17,578 אנשים לקרוא תרומות מאמרו של דניאל.
שאל דניאל
דניאל : היי, שמי דניאל.
דניאל : אני יכול לעזור לך עם הבעיה שלך על "בקלות לנתח / לחפש מחרוזות לשאילתת החיפוש של דף אינטרנט מיומני Apache באמצעות awk php ומקודדים שורת הפקודה לינוקס sed"?
קבל