פיתוח מפרסר חדשות ופידים של RSS במפתח

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

פיתוח ותחזוקה של כל סוגי האתרים:

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

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
פיתוח מפרסר חדשות ופידים של RSS במפתח
פשוט
מ- 1 יום עד 3 ימים
שאלות נפוצות

פרסר חדשות: איפה נשבר איסוף הפיד בקנה מידה

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

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

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

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

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

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

איזו השפעה נותן איסוף חדשות מנוהל

שלמות איסוף הפרסומים מפסיקה להיות תלויה באופן שבו המקור מוסר את הפיד. חלק מהחומרים אבדו בניווט בין עמודים ובסימון — עד 10–15% החמצות; לאחר העברת האיסוף למספר ערוצים בעת ובעונה אחת (פיד, תוצאות, ארכיון) ההחמצות יורדות לשברי אחוז ומאומתות בהשוואה מול המקור.

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

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

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

בסך הכול זוהי יציבות של איסוף הפיד: שלמות צפויה, השהיה קצרה של הופעת הרשומה ורשימה קצרה של מקומות שהמהנדס בודק.

פורמטי איסוף: פרסר חדשות לפי לוח זמנים ולפי אירוע

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

אפשרות מתי מתאימה מגבלות
ניתוח פיד פתוח (RSS, Atom, JSON Feed) המקור מפרסם פיד בעצמו בפיד יש לרוב רק תקציר וטקסט קטוע, תאריכים באזורי זמן שונים, ולחלק מהפרסומים יש השהיית פרסום
סריקת מדורים באתר המקור אין פיד או שהוא חלקי ההצמדה לסימון נשברת בעת עיצוב מחדש, נדרשים ניווט עמודים, סריקת מראות ומגבלת בקשות
ניתוח הטקסט המלא של הכתבה דרוש הטקסט בשלמותו, ולא תקציר לדגימה נכנסים ניווט, פרסומות ובלוקים של «קראו גם», נדרשים כללי ניקוי וקנוניזציה של קישורים
סקר מקורות מבוסס אירועים מהירות התגובה חשובה לא כל המקורות מוסרים התראות, נדרש מסלול גיבוי לפי לוח זמנים והגנה מפני מסירה כפולה
איסוף לפי לוח זמנים מצב בסיסי לכל המאגר המרווח הוא פשרה בין רעננות לעומס, יש חלונות פרסום יומיים ומגבלות על מספר הבקשות

איך אנחנו משלבים מצבים

בפועל אנחנו לא בוחרים אפשרות אחת: איסוף לפי לוח זמנים מכסה את כל רשימת המקורות, וסקר מבוסס אירועים מופעל במקום שבו ההשהיה קריטית.

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

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

שלבי הטמעת הפרסר: מביקורת מקורות ועד מסירה

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

  1. ביקורת מקורות. אנחנו מפרקים את רשימת הפידים: מי מהם מוסר טקסט מלא, מי רק תקציר, באיזה אופן מגיעים התאריכים, האם יש ארכיון ומגבלות על תדירות הבקשות. בפלט — רשימת מקורות עם עדיפות ומצב סריקה.
  2. סכמת נרמול שדות. אנחנו מכניסים פרסומים מפידים שונים לסט אחיד: כותרת, תאריך, גוף, קישור, מחבר, מדורים. בנפרד אנחנו מתארים את המרת התאריכים לאזור זמן אחד ואת הטיפול בקידודים — אחרת נוצרות במאגר כפילויות ורשומות בלי תוכן.
  3. כללי סריקת הפיד. אנחנו קובעים את תדירות הסקר, את עומק ההשלמה בהרצה הראשונה, דה-דופליקציה לפי קישור וטביעת אצבע של הטקסט. כאן גם מתארים את ההתנהגות כשהמקור אינו זמין ואת ההשלמה החוזרת של חלון שהוחמץ.
  4. בדיקה על מדגם ייחוס. אנחנו מרכיבים סט פרסומים מתויג ידנית לתקופה ומשווים לו את התוצאה: שיעור השדות שחולצו נכון, מספר הכפילויות הכוזבות, רשומות שאבדו. הכללים וניתוח הסימון מתוקנים עד לתוצאה יציבה.
  5. מסירת הפתרון ללקוח. אנחנו מוסרים קונפיגורציות של מקורות, תיאור סכמת השדות, הוראות לחיבור פיד חדש והתראות על תקלות שמופעלות לפני שהקורא יבחין בבעיה.

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

ערכת מסירה: קונפיגורציות, סכמות סריקה, נהלים

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

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

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

מקרה בוחן: איך איסוף הפיד הפסיק ליפול בשיאי עומס

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

מה היה לפני

האיסוף נשען על פעולות ידניות: העורך עבר על המקורות, העתיק חומרים והשווה אותם בעיניים לאלה שכבר פורסמו. מדידות במשך חודש: עד שליש מהרשומות — חזרות על אותה הודעה, 5-7 השלמות חירום בשבוע, ובגל השיא אבדו עד 15% מהפרסומים. הפידים נסקרו בשלמותם, בלי להתחשב בשינויים, ולכן העומס על המקורות גדל יחד עם היקף הארכיון.

מה שינו ומה יצא

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

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

במה שונה איסוף ב-RSS מניתוח עמודי המקור

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

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

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

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

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

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

ספקות טכניים שכדאי להסיר לפני ההתחלה

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

להלן שאלות שהמהנדסים של הלקוח שואלים לרוב לפני ההתחלה.

המקור מוסר רק את הרשומות האחרונות — חדשות ישנות יאבדו?

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

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

כיצד מחברים מקורות סגורים?

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

כיצד נשלטות כפילויות?

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

באיזו תדירות מתעדכנים הנתונים?

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

מה קורה אם המקור אינו זמין?

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

נדון במשימה ונחזור עם תוכנית עבודה

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

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

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

הכישורים שלנו:

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1394
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1369
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1142
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1153
  • פיתוח אתר עבור SBH Partners
    פיתוח אתר עבור SBH Partners
    1232
  • פיתוח אתר עבור Red Pear
    פיתוח אתר עבור Red Pear
    642