الصنف urllib.robotparser.RobotFileParser
في بايثون
يقدّم هذا الصنف توابع لقراءة الأسئلة عن ملف robots.txt
وتحليلها والإجابة عن الأسئلة المتعلّقة بها في عنوان URL المعطى.
البنية العامة
urllib.robotparser.RobotFileParser(url='')
توابع الصنف RobotFileParser
يقدّم الصنف RobotFileParser
التوابع التالية:
التابع set_url(url)
يعين التابع عنوان URL الذي يشير إلى ملف robots.txt
.
التابع read()
يقرأ التابع عنوان URL الخاص بملف robots.txt
ويرسله إلى المحلّ.
التابع parse(lines)
يحلّل التابع الأسطر المعطاة في الملف.
التابع can_fetch(useragent, url)
يعيد التابع القيمة True
إن كان مسموحًا لوكيل المستخدم المعطى أن يجلب عنوان URL بالاعتماد على القواعد المضمّنة في ملف robots.txt
لمحلّل.
التابع mtime()
يعيد التابع وقت آخر عملية جلب لملف robots.txt
، وهو أمر مفيد بالنسبة إلى عناكب الويب طويلة المدى والتي تحتاج إلى التحقق من ملفات robots.txt
الجديدة بصورة درية.
التابع modified()
يعين التابع الوقت الحالي كوقتٍ لآخر عملية جلب لملف robots.txt
.
التابع crawldelay(useragent)
يعيد التابع قيمة المعامل Crawl-delay
من ملف robots.txt
لوكيل المستخدم المعطى. إن لم يكن هذا المعامل موجودًا أو لم يكن نطبق على وكيل المستخدم المعطى أو كانت المدخلات المرتبطة بهذا المعامل ذات صياغة غير صحيحة في ملف robots.txt
فإنّ التابع سيعيد القيمة None
.
ملاحظة: هذا التابع جديد في الإصدار 3.6 من بايثون.
التابع request_rate(useragent)
يعيد التابع محتويات المعامل Request-rate
من ملف robots.txt
على هيئة صفّ مسمّى RequestRate(requests, seconds)
. إن لم يكن هذا المعامل موجودًا أو لم يكن نطبق على وكيل المستخدم المعطى أو كانت المدخلات المرتبطة بهذا المعامل ذات صياغة غير صحيحة في ملف robots.txt
فإنّ التابع سيعيد القيمة None
.
ملاحظة: هذا التابع جديد في الإصدار 3.6 من بايثون.
أمثلة
يبين المثال التالي طريقة استخدام الصنف RobotFileParser
:
>>> import urllib.robotparser
>>> rp = urllib.robotparser.RobotFileParser()
>>> rp.set_url("http://www.musi-cal.com/robots.txt")
>>> rp.read()
>>> rrate = rp.request_rate("*")
>>> rrate.requests
3
>>> rrate.seconds
20
>>> rp.crawl_delay("*")
6
>>> rp.can_fetch("*", "http://www.musi-cal.com/cgi-bin/search?city=San+Francisco")
False
>>> rp.can_fetch("*", "http://www.musi-cal.com/")
True