reppy সম্মুখীন অন্যান্য robots.txt পারজার মধ্যে memoization সমর্থন অভাব, এবং বিল্ট ইন robotparser মধ্যে হামাগুড়ি বিলম্ব এবং সাইট ম্যাপ জন্য সহায়তার অভাব আউট শুরু.
সমন্বয়
এই প্যাকেজটি 1996 RFC, সেইসাথে ওয়াইল্ডকার্ড মেলা, হামাগুড়ি বিলম্ব, এবং সাইটম্যাপ মত অতিরিক্ত সাধারণত বাস্তবায়িত বৈশিষ্ট্য সমর্থন করে. অনুমতি এবং নামঞ্জুর মেলা নানারকম উপায় রয়েছে. এক পদ্ধতির দীর্ঘতম ম্যাচ ব্যবহার করা হয়. আরেকটি সবচেয়ে নির্দিষ্ট ব্যবহার করা হয়. এই প্রেক্ষাপটে সংজ্ঞায়িত একটু কঠিন একটি শব্দ যে - এই প্যাকেজটি দীর্ঘতম যে নির্দেশ, এটা সবচেয়ে নির্দিষ্ট করা হয় যে এক যে হচ্ছে ধৃষ্টতা অনুসরণ করার জন্য চয়ন করা.
ব্যবহারের
reppy ব্যবহার করার সবচেয়ে সহজ উপায় একটি URL বা URL গুলি / অনুমতি দেয়া হয়, শুধু জিজ্ঞাসা করা হল:
আমদানি reppy
# এই পরোক্ষভাবে example.com এর robot.txt রক্ষিত রাখে
reppy.allowed ('http://example.com/howdy')
# => সত্য
# এখন, এটা কবে তা শেষ (Expiration` 'আরও পড়ুন) উচিত যখন উপর ভিত্তি করে ক্যাচে এর
reppy.allowed ('http://example.com/hello')
# => সত্য
# এটি ব্যাচ প্রশ্নের সমর্থন
reppy.allowed (['http://example.com/allowed1', 'http://example.com/allowed2', 'http://example.com/disallowed'])
# => ['Http://example.com/allowed1', 'http://example.com/allowed2']
(রক্ষিত রাখে সমান্তরাল মধ্যে সম্পন্ন না হয়, যদিও) # ব্যাচ প্রশ্নের এমনকি বিভিন্ন ডোমেইন জুড়ে সমর্থিত
reppy.allowed (['http://a.com/allowed', 'http://b.com/allowed', 'http://b.com/disallowed'])
# => ['Http://a.com/allowed', 'http://b.com/allowed']
এটা ব্যবহার করা বেশ সহজ. ডিফল্ট আচরণ urllib2 সঙ্গে এটা আপনার জন্য আনা হয়
আমদানি reppy
# একটি বিশেষ ডোমেইন সঙ্গে যুক্ত একটি reppy বস্তুর করুন
R = reppy.fetch ('http://example.com/robots.txt')
কিন্তু আপনি ঠিক যেমন সহজে আপনি সংগৃহীত যে একটি পংক্তি সঠিকরূপে মীমাংসা করতে পারেন.
আমদানি urllib2
= urllib2.urlopen ('http://example.com/robots.txt') পড়ুন তথ্য ()
R = reppy.parse (তথ্য)
মেয়াদপূর্তির
reppy আপনি জন্য robots.txt আনা হচ্ছে প্রধান সুবিধা হল তার তথ্য মেয়াদ শেষ হয়ে গেছে পর এটি স্বয়ংক্রিয়ভাবে refetch করতে পারেন. শুধু স্বাভাবিক হিসাবে এটি ব্যবহার করতে থাকুন - আপনি এমনকি এ সম্বন্ধে চিন্তা করতে হবে না, তাই এটা আপনি স্বচ্ছভাবে সম্পন্ন এর. আপনি পছন্দ অথবা, যদি আপনি আপনার নিজের সময় টু লাইভ, অগ্রগণ্য যা সেট করতে পারেন:
আমদানি reppy
R = reppy.fetch ('http://example.com/robots.txt')
r.ttl
# => 10800 (বাস কতক্ষণ?)
r.expired ()
# => মিথ্যা (এটা মেয়াদ শেষ হয়ে গেছে?)
r.remaining ()
# => 10798 (কতক্ষণ মেয়াদ শেষ হওয়া পর্যন্ত)
R = reppy.fetch ('http://example.com/robots.txt', TTL = 1)
# 2 সেকেন্ড অপেক্ষা করুন
r.expired ()
# => সত্য
অনুসন্ধান
Reppy আপনি করতে হবে না, যাতে হোস্ট ট্র্যাক রাখতে চেষ্টা করে. আপনি আনা ব্যবহার করার সময় এই স্বয়ংক্রিয়ভাবে সম্পন্ন করা হয়, অথবা আপনি ঐচ্ছিকরূপে আপনি পার্স থেকে এটা সংগৃহীত URL প্রদান করতে পারেন. এমনটি অনুসন্ধান যখন আপনি শুধু পথ প্রদান করতে পারবেন. অন্যথা, আপনি পুরো URL প্রদান করতে হবে:
# এই doable হয়
R = reppy.fetch ('http://example.com/robots.txt')
r.allowed ('/')
r.allowed (['/ হ্যালো', '/ Howdy'])
# এবং তাই এই হল
= urllib2.urlopen ('http://example.com/robots.txt') পড়ুন তথ্য ()
R = reppy.parse (তথ্য, URL = http: //example.com/robots.txt ')
r.allowed (['/', '/ হ্যালো', '/ Howdy'])
# যাইহোক, আমরা পরোক্ষভাবে এই থেকে যা ডোমেইন জানি না
reppy.allowed (['/', '/ হ্যালো', '/ Howdy'])
হামাগুড়ি বিলম্ব এবং সাইটম্যাপ
Reppy অ RFC exposes, কিন্তু হামাগুড়ি বিলম্ব এবং সাইটম্যাপ বৈশিষ্ট্যাবলী ব্যাপকভাবে ব্যবহৃত. হামাগুড়ি বিলম্ব প্রতি ইউজার এজেন্ট ভিত্তিতে বিবেচনা করা হয়, কিন্তু সাইটম্যাপ গ্লোবাল বলে মনে করা হয়. তারা নির্দিষ্ট না হয়, হামাগুড়ি বিলম্ব আর কেউ নেই এবং সাইটম্যাপ একটি খালি তালিকা. উদাহরণস্বরূপ, এই আমার robots.txt যদি:
ব্যবহারিক দূত: *
হামাগুড়ি বিলম্ব: 1
সাইট ম্যাপ: http://example.com/sitemap.xml
সাইট ম্যাপ: http://example.com/sitemap2.xml
তারপর এই প্রবেশযোগ্য:
চ ফাইল ('myrobots.txt', 'R') সঙ্গে:
& Nbsp; R = reppy.parse (f.read ())
r.sitemaps
# => ['Http://example.com/sitemap.xml', 'http://example.com/sitemap2.xml']
r.crawlDelay
# => 1
সমন্বয় user-agent
আপনি robots.txt এনে দেওয়ার জন্য আপনার পছন্দসই একটি ইউজার এজেন্ট প্রদান করতে পারেন, এবং তারপর আমরা মেলে ইউজার এজেন্ট স্ট্রিং প্রথম / সামনে গিয়ে উপস্থিত হয় তা ডিফল্ট হয়. উদাহরণস্বরূপ, যদি আপনি 'MyCrawler / 1.0' হিসেবে ইউজার এজেন্ট প্রদান, তাহলে আমরা User-agent বিরুদ্ধে মেলে পংক্তিরূপে উল্লিখিত হয় 'MyCrawler' ব্যবহার করব. তুলনা কেস অবশ হয়, এবং আমরা user-agent মধ্যে ওয়াইল্ডকার্ড সমর্থন করে না. এই ডিফল্ট আপনার জন্য উপযুক্ত না হয়, তাহলে আপনি একটি বিকল্প প্রদান করতে পারেন:
# এই ডিফল্ট দ্বারা 'myuseragent' বিরুদ্ধে ম্যাচ হবে
R = reppy.fetch ('http://example.com/robots.txt', UserAgent = 'MyUserAgent / 1.0')
# এই পরিবর্তে 'someotheragent' বিরুদ্ধে ম্যাচ হবে
R = reppy.fetch ('http://example.com/robots.txt', UserAgent = 'MyUserAgent / 1.0', = 'someotheragent' userAgentString)
পথ-সমন্বয়
পাথ মিলে সমর্থন উভয় * এবং $
বৈশিষ্ট্যগুলি
- সংগৃহীত robots.txt এর Memoization
- পাইথন
মেয়াদ শেষ হেডার থেকে নেওয়া <লি> মেয়াদপূর্তির
<লি> ব্যাচ প্রশ্নের
<লি> robots.txt এনে দেওয়ার জন্য কনফিগার ইউজার এজেন্ট
<লি> মেয়াদ উপর স্বয়ংক্রিয় refetching ভিত্তিবিন্দু
<লি> হামাগুড়ি বিলম্ব জন্য সমর্থন
<লি> সাইটম্যাপ জন্য সমর্থন
<লি> ওয়াইল্ডকার্ড মিলে
আবশ্যক
পাওয়া মন্তব্যসমূহ না