"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني تحديد موقع عناصر HTML بكفاءة حسب فئة CSS باستخدام XPath؟

كيف يمكنني تحديد موقع عناصر HTML بكفاءة حسب فئة CSS باستخدام XPath؟

تم النشر بتاريخ 2024-12-21
تصفح:419

How Can I Efficiently Locate HTML Elements by CSS Class Using XPath?

البحث عن العناصر حسب فئة CSS باستخدام XPath

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

]&&&]ضع في اعتبارك صفحة HTML تحتوي على عنصر div يحتوي على فئة تسمى "اختبار". يمكن استخدام استعلام XPath التالي للعثور على هذا العنصر:

//*[contains(@class, 'Test')]
//*[contains(@class, 'Test')]
يحدد هذا الاستعلام كافة العناصر التي تحتوي على فئة "اختبار" ، بغض النظر عن مكان ظهورها في شجرة المستند.

لتحسين الأداء، يمكنك تضييق نطاق البحث ليشمل أنواع عناصر محددة، مثل divs. على سبيل المثال، سيؤدي الاستعلام التالي إلى تقييد البحث على divs التي تحتوي على فئة "اختبار":

//div[contains(@class, 'Test')]
//*[contains(@class, 'Test')]
ومع ذلك، إذا كان لديك عناصر ذات فئات مثل "Testvalue" أو "newTest"، فإن الاستعلام أعلاه سيطابقها أيضًا. لضمان تطابق أكثر دقة، يمكنك استخدام سلسلة متسلسلة تحتوي على مسافة قبل وبعد فئة "الاختبار"، كما اقترح @Tomalak:

//div[contains(concat(' ', @class , ' '), ' Test ')]
//*[contains(@class, 'Test')]
سيطابق هذا الاستعلام فقط divs التي تحتوي على الكلمة "اختبار" كقيمة فئة منفصلة.

لإزالة أي مسافة بيضاء المشكلات، يمكنك أيضًا تسوية المسافات باستخدام وظيفة تسوية المسافة، كما اقترح @Terry:

//div[contains(concat(' ',normalize-space(@class),' '), ' اختبار ')]
//*[contains(@class, 'Test')]
أخيرًا، من المهم استبدال العلامة النجمية (*) في هذه الاستعلامات باسم العنصر الفعلي الذي تريد مطابقته، إلا إذا كنت ترغب في البحث في جميع العناصر في المستند. سيؤدي هذا إلى تحسين كفاءة الاستعلام.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3