انتقل إلى المحتوى

محددات XPath مقابل CSS: دليل متعمق لخبراء تجريف الويب

خلال أكثر من 10 سنوات من العمل كمتخصص في استخراج بيانات الويب، ظهرت بعض الأسئلة في كثير من الأحيان مثل "هل يجب علي استخدام محددات XPath أو CSS؟"

على الرغم من عدم وجود إجابة واحدة صحيحة، فإن فهم الاختلافات الرئيسية بين تقنيتي اختيار العنصرين يمكن أن يساعدك في أن تصبح ممارسًا أكثر استنارة.

في هذا الدليل الشامل، سأغطي كل ما تحتاج لمعرفته حول XPath وCSS من منظور تجريف الويب:

  • الأصول والتطور
  • بنية بناء الجملة والاستعلام
  • القدرات والقيود
  • اعتبارات الأداء
  • دعم المتصفح والمعايير
  • الأدوات ودعم المكتبة

هدفي هو تقديم الرؤى التي تحتاجها، سواء كمطور أو كاشط، لتحديد متى تستخدم XPath مقابل CSS لأي مهمة استخراج ويب معينة.

مستعد؟ دعونا نتعمق.

لمحة تاريخية

تم إنشاء XPath كلغة استعلام لمستندات XML، بينما تم تصميم CSS لتصميم صفحات الويب.

ولكن مع مرور الوقت، ظهرت كأدوات قوية لاختيار العناصر للأتمتة واحتياجات الكشط.

صعود XPath

عندما اكتسب XML شعبية في التسعينيات، كان المطورون بحاجة إلى طريقة قياسية لاستهداف العقد في المستندات المعقدة.

تم إنشاء XPath في عام 1999 لسد هذه الحاجة.

اعتمد W3C XPath كمكون رئيسي لـ XSLT وXQuery. وبرامج أخرى مثل Selenium وScrapy تدعم XPath للعثور على عناصر HTML في صفحات الويب المعروضة.

من خلال نمذجة DOM كشجرة، قدم XPath إمكانات اجتياز قوية لأعلى ولأسفل وعبر الفروع.

محددات CSS أصبحت في كل مكان

تم تصميم CSS كلغة تصميم وتضمنت محددات أساسية مثل النوع والمعرف والفئة.

عندما أصبحت CSS جزءًا لا يتجزأ من تطوير الويب في التسعينيات، استثمرت المتصفحات بشكل كبير في تحسين محركات CSS.

أدى هذا الأداء جنبًا إلى جنب مع الانتشار الواسع إلى جعل محددات CSS جذابة لاحتياجات تجريف الويب أيضًا.

تستخدم مكتبات الكشط مثل Beautiful Soup محددات CSS كإستراتيجية سريعة لتحديد المواقع.

لذلك، بينما استهدف XPath مستندات XML/HTML ككل، ركز CSS على تصميم عناصر واجهة المستخدم المرئية.

مقارنة بناء جملة XPath وCSS

دعونا نفك تركيب جملة XPath وCSS من خلال بعض الأمثلة.

خذ بعين الاعتبار هذه الصفحة البسيطة:

<html>

<body>
  <div>
    <h2>Hello World</h2>
    <p>This is a page</p> 
  </div>

  <ul>
    <li class="highlight"><span>List item 1</span></li>
    <li>List item 2</li>    
  </ul>

</body>

</html>

بناء جملة XPath

يتم التعامل مع DOM كشجرة من العقد. يستخدم XPath تعبيرات المسار للتنقل بين العقد:

  • /html/body - حدد ملف <body> العنصر
  • //li[1] - اختر أولا <li>
  • //h2/text() - احصل على النص في الداخل <h2>
  • //span/ancestor::ul - اصعد الى <ul> أصل

بعض الأشياء البارزة:

  • هيكل هرمي يعتمد على مواضع DOM
  • "//" للبحث على مستوى العالم؛ "/" للأطفال المباشرين
  • [ ] للمسندات والوظائف مثل position()

بناء جملة محدد CSS

يستخدم CSS بناء جملة بسيطًا ومطابقًا للأنماط لاستهداف العناصر:

  • body - تحديد <body> بطاقة
  • .highlight - اختر حسب اسم الفئة
  • ul > li - مباراة <li> في الداخل <ul>
  • h2 + p - الجمع بين الأخوة المجاورة

الملاحظات:

  • أنماط مسطحة وغير هرمية
  • شخصيات خاصة مثل >, + لتحديد العلاقات
  • لا توجد وسيلة لاجتياز الشجرة

باختصار، XPath موجه نحو الاستعلام عن المستندات المنظمة، بينما يوفر CSS مطابقة بسيطة للسلاسل الفرعية.

مقارنة ميزات XPath وCSS

بعد تغطية الأساسيات، دعونا نقارن بعض نقاط التمايز الرئيسية:

اجتياز DOM

  • يمكن لـ XPath اجتياز كل من الأعلى والأسفل
  • محددات CSS تسمح فقط بالاجتياز للأسفل

وهذا يجعل XPath أكثر مرونة.

قراءة

  • تكون محددات CSS بشكل عام أكثر إيجازًا وقابلية للقراءة
  • يمكن أن تصبح سلاسل XPath الطويلة معقدة

لذلك بالنسبة للاستعلامات الأبسط، تتمتع CSS بميزة.

الأداء

  • غالبًا ما تكون محددات CSS أسرع بسبب تحسين المتصفح
  • ولكن بالنسبة للصفحات المعقدة، تغلق الفجوة

في معظم الحالات، تكون السرعة قابلة للمقارنة.

المطابقة الجزئية

  • يدعم XPath contains() للبحث الجزئي عن النص
  • تفتقر CSS إلى الدعم الأصلي، وبعض الفئات الزائفة تعمل فقط على التطابقات التامة

هنا يتمتع XPath بوظائف أفضل.

دعم اللغة

  • يمكن لـ XPath الاستعلام عن كل من XML وHTML
  • يعمل CSS فقط مع HTML/DOM

يعد XPath مفيدًا لكلا تنسيقي البيانات.

ما الذي يجب استخدامه عند الكشط؟

بناءً على إمكانياتها، إليك بعض التوصيات حول متى يتم تعيين XPath أو CSS افتراضيًا:

تفضل XPath عندما تحتاج إلى:

  • اجتياز شجرة DOM
  • البحث عن القيم النصية جزئيا
  • استعلام XML (وليس فقط HTML)
  • استخدم المنطق الشرطي المتقدم

تفضيل محددات CSS عندما تريد:

  • كتابة استفسارات قصيرة وبسيطة
  • الاستفادة من تحسين المتصفح
  • دعم المكتبات مثل Beautiful Soup
  • حدد موقع عناصر واجهة المستخدم المرئية

لكن لا توجد قواعد صارمة - ستخبرك التجربة متى يكون الشخص أكثر ملاءمة.

غالبًا ما يكون استخدام الاثنين معًا هو النهج الأمثل.

دعم المتصفح ومعاييره

تتمتع جميع المتصفحات الحديثة بدعم كامل لـ XPath وCSS:

الميزاتالكرومبرنامج فايرفوكسسفاري
كسباثنعمنعمنعم
محددات CSSنعمنعمنعم

وكلاهما معايير الويب:

  • XPath هي توصية W3C
  • تم توحيد CSS بواسطة W3C

لذلك يمكنك الاعتماد على الدعم الممتاز عبر المستعرضات لكلتا التقنيتين.

الخلاصة والوجبات السريعة الرئيسية

يعتمد الاختيار بين XPath وCSS على قدراتهما أكثر من الأداء.

نصيحتي هي أن تتقن كليهما، وأن تدع حالة الاستخدام توجه اختيارك.

بالنسبة لعمليات البحث عن العناصر البسيطة، تفضل CSS لسهولة القراءة.

عندما تحتاج إلى اجتياز DOM قوي أو مطابقة جزئية، استخدم XPath.

إذا أمكن، استخدم XPath وCSS معًا للاستفادة من قوتهما المدمجة.

من خلال الخبرة في استخراج البيانات من الويب، ستتعلم بطبيعة الحال متى يمكنك الاستفادة من محددات XPath مقابل محددات CSS إلى أقصى إمكاناتها.

آمل أن يكون هذا الدليل قد قدم نظرة عامة شاملة على نقاط القوة والاختلافات والتطبيقات الرئيسية لاحتياجات تجريف الويب الخاصة بك.

استخراج سعيد!

الوسوم (تاج):

الانضمام إلى محادثة

لن يتم نشر عنوان بريدك الإلكتروني. الحقول المشار إليها إلزامية *