تقنية

RobotFileParser في بايثون: هل can_fetch يجلب الصفحة؟

مسار own يطابق الحظر
قرار مثالنا الأول. [1] [2]

نحلل سطرين مؤلفين في الذاكرة، دون تنزيل. [1] [2]

الخلاصة السريعة

لا؛ can_fetch يعيد قرارًا وفق القواعد المحللة. [1] [2]

  • parse يأخذ الأسطر التي نعطيه إياها. [1] [2]
  • قيمة المسار /own/page هنا False. [1] [2]
  • قيمة /public هنا True؛ ليست استجابة خادم. [1] [2]
  • لم نستدع read لقراءة ملف الموقع. [1] [2]
  • اختبرنا 3.12.14؛ النطاق والقواعد مخترعة. [1] [2]

المثال

from urllib.robotparser import RobotFileParser
r=RobotFileParser()
r.parse(['User-agent: *','Disallow: /own'])
print(r.can_fetch('ownbot','https://own.invalid/own/page'))
print(r.can_fetch('ownbot','https://own.invalid/public'))

[1] [2]

القرار والصفحة

القيمة الأولى تطابق حظر المسار في مثالنا؛ الثانية لا تطابقه. لم نختبر وجود الصفحتين أو تنزيلهما. يتغير سجل زمن المحلل عند parse، فلا نصف العملية بأنها بلا تغير حالة. [1] [2]

مسار public لا يطابق الحظر
قرار مثالنا الثاني. [1] [2]

الحدود

نتيجتان لقواعد بسيطة، لا اختبار فهرسة أو ترتيب نتائج أو مطابقة كاملة لمعيار الزحف. قراءة قواعد حقيقية تحتاج خطوة منفصلة لم ننفذها. [1] [2]

المراجع

  1. Python: urllib.robotparser
  2. CPython3.12.14: robotparser
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

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