Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में urllib.robotparser: robots.txt पार्सर

urllib.robotparser मॉड्यूल RobotFileParser क्लास प्रदान करता है जो robots.txt फाइल को पार्स करके बताता है कि कोई यूज़र एजेंट किसी URL को एक्सेस कर सकता है या नहीं।

robots.txt क्या है?

वेबसाइट मालिक /robots.txt में क्रॉलर्स (स्पाइडर्स) के लिए निर्देश देते हैं - The Robots Exclusion Protocol।

# robots.txt उदाहरण
Sitemap: https://example.com/sitemap.xml
User-agent: *
Disallow: /admin/
Disallow: /downloads/
Disallow: /media/
Disallow: /static/

RobotFileParser मेथड्स

मेथडविवरण
set_url(url)robots.txt URL सेट करें
read()URL से पढ़कर पार्स करें
parse(lines)स्ट्रिंग लाइन्स से पार्स करें
can_fetch(useragent, url)क्या यूज़र एजेंट URL फेच कर सकता है? (True/False)
mtime()अंतिम फेच समय (टाइमस्टैम्प)
modified()अंतिम फेच समय सेट करें
crawl_delay(useragent)Crawl-delay मान लौटाता है
request_rate(useragent)Request-rate (requests, seconds) टपल लौटाता है

उदाहरण

from urllib import parse, robotparser

AGENT_NAME = 'PyMOTW'
URL_BASE = 'https://example.com/'

parser = robotparser.RobotFileParser()
parser.set_url(parse.urljoin(URL_BASE, 'robots.txt'))
parser.read()

# चेक करें
print(parser.can_fetch(AGENT_NAME, 'https://example.com/'))           # True/False
print(parser.can_fetch(AGENT_NAME, 'https://example.com/admin/'))     # False
print(parser.can_fetch(AGENT_NAME, 'https://example.com/downloads/')) # False

print(parser.crawl_delay(AGENT_NAME))   # सेकंड्स में डिले या None
print(parser.request_rate(AGENT_NAME))  # RequestRate(requests, seconds) या None

व्यावहारिक उपयोग

def can_scrape(url, user_agent='MyBot'):
    """चेक करें कि URL स्क्रैप किया जा सकता है"""
    from urllib import parse, robotparser
    
    parsed = parse.urlparse(url)
    base_url = f"{parsed.scheme}://{parsed.netloc}/"
    
    rp = robotparser.RobotFileParser()
    rp.set_url(parse.urljoin(base_url, 'robots.txt'))
    try:
        rp.read()
        return rp.can_fetch(user_agent, url)
    except Exception:
        return True  # robots.txt न होने पर अनुमति मान लें

# उपयोग
if can_scrape('https://example.com/page.html'):
    print("Scraping allowed")
else:
    print("Blocked by robots.txt")

महत्वपूर्ण नोट्स

  • robots.txt एक स्वैच्छिक मानक है - बॉट्स इसे नज़रअंदाज़ कर सकते हैं।
  • यह एक्सेस कंट्रोल लागू नहीं करता, केवल दिशानिर्देश देता है।
  • कैशिंग करें: हर रिक्वेस्ट पर read() न करें, mtime() चेक करके रीफ्रेश करें।
  • कुछ साइट्स robots.txt में Crawl-delay और Request-rate निर्दिष्ट करती हैं।
  1. पायथन प्रोग्राम: सिलेक्शन सॉर्ट एल्गोरिदम पायथन प्रोग्राम: सिलेक्शन सॉर्ट एल्गोरिदम

    इस लेख में, हम पायथन 3.x या उससे पहले के संस्करण में सिलेक्शन सॉर्ट और इसके कार्यान्वयन के बारे में जानेंगे।सिलेक्शन सॉर्ट एल्गोरिदम में, एक सरणी को अनसॉर्टेड भाग से न्यूनतम तत्व को पुनरावर्ती रूप से ढूंढकर और इसे शुरुआत में डालकर सॉर्ट किया जाता है। दिए गए सरणी पर सिलेक्शन सॉर्ट के निष्पादन के दौरा

  1. विंडोज पर पायथन प्रोग्रामिंग के लिए IDE विंडोज पर पायथन प्रोग्रामिंग के लिए IDE

    इस लेख में, हम विंडोज पर पायथन के लिए उपलब्ध विभिन्न IDE के बारे में जानेंगे।PyCharmइंटरैक्टिव पायथन कंसोलवेब फ्रेमवर्क के लिए समर्थनतेज़ रिफैक्टरिंग समयकम विकास समयJupyter Notebookलगभग हर पायथन मॉड्यूल के साथ संगतताकम स्पेस और हार्डवेयर आवश्यकताएंइनबिल्ट टर्मिनल और कर्नेल फीचर्सविभिन्न प्रकार के वि

  1. पायथन कोड ऑप्टिमाइज़ेशन टिप्स पायथन कोड ऑप्टिमाइज़ेशन टिप्स

    हालांकि हम सभी जानते हैं कि पायथन अन्य कंपाइल्ड भाषाओं जितना तेज़ या कुशल नहीं है। फिर भी, कई बड़ी कंपनियां दिखाती हैं कि पायथन कोड बहुत बड़े वर्कलोड को संभाल सकता है, जो दर्शाता है कि यह इतना धीमा भी नहीं है। इस सेक्शन में हम कुछ ऐसे टिप्स देखेंगे जिन्हें ध्यान में रखकर एक सही पायथन प्रोग्राम को औ