Log in to leave a comment
No posts yet
عندما تقوم بسحب الـ HTML لصفحة ويب وتحويله إلى نص مجرد فقط، يفقد العميل الآلي (AI Agent) بوصلته. فبينما يرى النص، يختفي التسلسل الهرمي للمستند. ووفقاً لبيانات بحثية نُشرت في عام 2024، فإن الحفاظ على الهيكل الهرمي للمستند يرفع دقة البحث بنسبة تزيد عن 30% مقارنة بطريقة تقطيع النص المجرد. أنا مقتنع تماماً بأن المفتاح يكمن في جعل العميل يدرك أهمية البيانات فوراً من خلال رؤية معلومات العناوين (Headers).
أول ما عليك فعله هو التخلي عن get_text() في مكتبة BeautifulSoup. بدلاً من ذلك، استخدم مكتبة Markdownify لربط وسوم HTML بعناوين Markdown. يجب عليك استخدام استراتيجية تقسيم (Chunking) من الأعلى إلى الأسفل، حيث يتم تقسيم الـ Markdown المحول بناءً على العناوين لتوفير القسم العلوي بالكامل كسياق. استخدام مكتبة Trafilatura جنباً إلى جنب مع ذلك يمكن أن يقلل استهلاك التوكنات بنسبة تصل إلى 67% مع استخراج متن النص في آن واحد. إنها الطريقة الأكثر ضماناً لتقليل التكلفة ورفع الدقة.
البيانات المخفية خلف قوائم التبويبات (Tabs) أو الأكورديون (Accordions) التي يتم تنفيذها بواسطة JavaScript لا يمكن للزاحف الساكن (Static Crawler) قراءتها أبداً. أعتقد أن هذه البيانات غير المرئية هي الجاني الرئيسي الذي يضعف جودة استجابات أنظمة RAG. يتصل Playwright مباشرة ببروتوكول المتصفح الأساسي CDP، مما يجعله أسرع وأقوى من Selenium في التحكم بالمحتوى الديناميكي. تظهر حالات التطبيق الفعلية أن الأنظمة التي طبقت تسلسلاً للنقر التلقائي حصلت على بيانات أكثر بنسبة 30% من الجمع اليدوي.
عند بناء منطق أتمتة يعتمد على Playwright في حلقة تكرارية، استخدم وظيفة page.wait_for_selector. يجب عليك الانتظار بالتأكيد حتى يظهر العنصر القابل للنقر على الشاشة. بعد ذلك، استدعِ تابع scroll_into_view_if_needed() لإجبار التمرير اللانهائي أو طلبات AJAX على الحدوث. انقر على كل تبويب بالتسلسل والتقط حالة DOM المتغيرة في الوقت الفعلي وقم بحفظها. عندها فقط ستكتمل قاعدة بياناتك دون نقص.
تستهلك الإعلانات، والتذييلات (Footers)، وأشرطة القوائم نافذة السياق (Context Window) للعميل وتلوث متجهات التضمين (Embedding Vectors). الضوضاء في مواقع الويب أخطر مما تظن، والبيانات غير المنقحة تعتبر بمثابة سم للذكاء الاصطناعي. يقوم Readability.js بتحليل كثافة النصوص والروابط لاستخلاص المتن الذي يحتوي على المعلومات الفعلية فقط. في نتائج الاختبارات المرجعية، سجل Readability وسيط أداء قدره 0.970 عبر جميع أنواع الصفحات، مما أزال العناصر الخارجة عن المتن بدقة.
أدخل هذه الخوارزمية في خط معالجة البيانات الخاص بك. ضع الـ HTML المجموع في Readability.js لتصفية العنوان والمتن فقط، ثم احذف المسافات غير الضرورية باستخدام التعبيرات النمطية (Regular Expressions). تحويل هذا النص المنقح إلى Markdown وحفظه سيقلل كمية البيانات التي يقرأها العميل بنسبة تصل إلى 90%، بينما تتحسن صلة البحث بمقدار 2.29 مرة. من الأفضل بكثير إدخال بيانات نظيفة بدلاً من حشو الكثير من البيانات قسراً.
تراقب معظم مواقع الويب علامة navigator.webdriver لمنع وصول عملاء الذكاء الاصطناعي. إذا كنت لا ترغب في مواجهة شاشات الكابتشا (CAPTCHA)، فإن استراتيجية التخفي ضرورية. الحركات الآلية تُكتشف بسرعة. أرى أن محاكاة السلوك البشري رياضياً هي الحل الأذكى.
أولاً، استخدم إضافة playwright-stealth لإزالة علامات الـ WebDriver وخداع الموقع بمتصفح Chrome حديث. عند تحريك الماوس، استخدم منحنيات بيزييه (Bezier Curves) بدلاً من الخطوط المستقيمة.
عند الكتابة أيضاً، أدخل تأخيراً زمنياً عشوائياً بين 50 مللي ثانية و200 مللي ثانية لكل حرف. مجرد أخذ استراحة عشوائية لمدة تتراوح بين ثانيتين إلى 5 ثوانٍ عند الانتقال بين الصفحات كفيل بتجنب أنظمة مكافحة البوتات. قد يبدو الأمر بطيئاً نوعاً ما، لكنه أسرع بكثير من التعرض للحظر وعدم القدرة على جمع البيانات على الإطلاق.