سؤال

هذا ليس في الحقيقة سؤال برمجي، بل هو سؤال خوارزمي أكثر.

المشكلة:ابحث عن قسم "المحتوى" في صفحة HTML.

أعني بـ "المحتوى" الدوم الذي يحتوي على محتوى الصفحة كما يراه البشر، بدون ضوضاء، ببساطة "المحتوى الفعلي للصفحة".أعرف أن المشكلة ليست محددة بشكل جيد، ولكن دعونا نستمر...على سبيل المثال، في مواقع المدونات، يكون هذا أمرًا سهلاً عادةً، فعند التصفح إلى منشور معين، عادةً ما يكون لديك بعض أشرطة الأدوات في أعلى الصفحة، وربما بعض عناصر التنقل على LHS ثم يكون لديك div الذي يحتوي على المحتوى.قد تكون محاولة معرفة ذلك من خلال HTML أمرًا صعبًا.ومع ذلك، لحسن الحظ، تحتوي معظم المدونات على خلاصات RSS وفي خلاصة هذا المنشور المحدد ستجد قسم <description> (أو <content:encoded>) وهذا هو بالضبط ما تريده.لذا، لتحسين تعريف المحتوى، هذا هو الشيء الفعلي الموجود على الصفحة والذي يحتوي على الجزء المثير للاهتمام، وإزالة جميع الإعلانات وعناصر التنقل وما إلى ذلك.لذا فإن العثور على محتوى من المدونات يعد أمرًا سهلاً نسبيًا، على افتراض أنها تحتوي على خدمة RSS.وينطبق الشيء نفسه على المواقع الأخرى الداعمة لـ RSS.

ماذا عن المواقع الإخبارية؟في كثير من الحالات، تحتوي المواقع الإخبارية على خدمة RSS، ولكن ليس دائمًا.كيف يمكن للمرء العثور على المحتوى على المواقع الإخبارية إذن؟ماذا عن المواقع العامة؟تحتوي العديد من صفحات الويب (ليست جميعها بالطبع) على قسم محتوى وأقسام أخرى.هل يمكنك التفكير في خوارزمية جيدة للعثور على الأقسام "المثيرة للاهتمام" مقابل الأقسام الأقل إثارة للاهتمام؟ولعل الأقسام التي تتغير من تلك التي لا تتغير؟

آمل أن أكون قد أوضحت نفسي ...شكرًا!

هل كانت مفيدة؟

المحلول

لم أفعل هذا، ولكن هذا سيكون نهجي العام.

كما أشرت، فإن الافتقار إلى البنية في أجزاء المحتوى المرئي (أي:لا تحتوي على علامات مثل header, navigation, ads) من HTML يعني أنه من الصعب الوصول إلى الجزء الرئيسي من الصفحة.تتمثل الطريقة التي أتبعها في إزالة العناصر المميزة التي قررت بالتأكيد أنها ليست مثيرة للاهتمام.قائمة الاستثناءات المحتملة يمكن أن تكون:

  • العناصر الفوقية مثل !doctype, head (خذ title كقطعة منفصلة من البيانات)
  • العناصر الديناميكية مثل object, embed, applet, script
  • الصور (اعتمادًا على ما إذا كنت تريد الاحتفاظ بها أم لا)، img
  • عناصر النموذج، أي. form, input, textarea, label, legend, select, option

يمكن بعد ذلك البدء في التمريرة الثانية في استبعاد حدوثها بشكل شائع div أو ul أسماء المعرفات/الفئة، وجميع العلامات الموجودة بداخلها، مثل:

  • header, footer, meta
  • nav, navigation, topnav, sidebar
  • ad, ads, adu (والأسماء الأخرى الشائعة الاستخدام للإعلانات)

نأمل أن يؤدي هذا إلى إزالة قدر كبير من الزخرفة من الصفحة.التحدي التالي هو محاولة تحديد المحتوى الرئيسي مما تبقى، وأقترح مبدئيًا افتراض أن مؤلف الموقع يستخدم HTML الدلالي بشكل صحيح، وبالتالي يستخدم بشكل أساسي h1, h2 علامات الرأس و p علامة الفقرة.

لتحديد المحتوى، سأبحث عن أي علامة رأس تليها بعد ذلك علامة (علامات) فقرة.(هذا قد يكون h2 للمحتوى الرئيسي الخاص بك؛ال h1 غالبًا ما يتم استخدام العلامة (وربما بشكل غير صحيح) لعرض اسم الموقع أو شعاره، ولكن نأمل أن يتم التخلص من ذلك عن طريق استبعاد أجزاء الرأس من الصفحة.) يجب إضافة كل فقرة لاحقة إلى المحتوى الحالي حتى تصل إلى فاصل، والتي يمكن أن تكون نهاية div أو td عنصر، أو يمكن أن يكون عنصر رأس من نفس المستوى الذي بدأت منه.

نظرًا لأنه قد لا يزال هناك عدة مجموعات من المحتوى الذي قمت بجمعه على الصفحة (ربما المحتوى الرئيسي بالإضافة إلى التعريف المبسط عن المؤلف)، فأنت بحاجة إلى اختبار وتحسين خطوة اتخاذ القرار هنا التي تختار المرشح الأكثر احتمالاً.غالبًا ما يكون هذا هو الأكبر، سواء من حيث الطول أو عدد عناصر الفقرة المستخدمة.

أثناء قيامك بجمع المزيد من الأمثلة على المحتوى، يمكنك إضافة مقاييس داعمة إلى الخوارزمية الخاصة بك؛قد يكون هذا أنك لاحظت استخدام العديد من الصفحات div id="content" أو id="maincontent".قد يكون من المفيد أيضًا الاحتفاظ بالعناصر الثانوية للمحتوى التي اكتشفتها، بحيث إذا كانت بعض المواقع لديها طريقة مثيرة للاهتمام لتنظيم المحتوى، فبمجرد إضافة أداة التقاط إلى الخوارزمية الخاصة بك، يمكن إعادة تشغيلها مقابل هذا فقط محتوى الموقع.

نصائح أخرى

وموقع منظم بشكل جيد وسوف يكون المناطق المشتركة في إعادة استخدام نفس الرمز، على سبيل المثال الملاحة، رأس وغيرها.

وعندما يكون لديك صفحة الهدف الذي ترغب في تحليل ومحاولة تصفح من خلال عدد قليل من الصفحات الأخرى تحت نفس المجال / فرعي والعثور على العناصر التي هي مشتركة بين كل الصفحات. تلك هي الأصوات التي تريد التخلص منها.

وبعد ذلك يمكنك إلقاء نظرة على ما تبقى، لمعرفة ما إذا تراجعت بعض الأصوات. عندما كنت قد جمعت كمية معقولة من تلك البيانات، في محاولة للعثور على بعض نمط فيها. حدد المنطق الخاص وتكرار.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top