Skip to main content

लेखक

Aditya Sundar - Waseda University

सारांश

यो परियोजनाले sitemap उपलब्धताको पर्वाह नगरी व्यवस्थित रूपमा websites अन्वेषण गर्न र व्यापक URL सूचीहरू उत्पन्न गर्न डिजाइन गरिएको web crawler विकास गर्दछ। Crawler ले static र dynamic दुवै content ह्यान्डल गर्दछ, बाह्य references ट्र्याक गर्दछ, र सीमित hardware मा कुशलतापूर्वक सञ्चालन गर्दछ। मुख्य क्षमताहरू:
  • Configurable concurrency को साथ Asynchronous crawling
  • व्यवस्थित coverage को लागि BFS-आधारित URL खोज
  • बाह्य reference ट्र्याकिङ र विश्लेषण
  • Playwright मार्फत Dynamic content समर्थन
  • SQLite-आधारित persistent storage

1. परिचय

Web crawling ले स्वचालित प्रणालीहरूलाई websites browse गर्न र डाटा सङ्कलन गर्न सक्षम बनाउँछ। Sitemaps ले structured URL सूचीहरू प्रदान गर्दा, सबै websites मा तिनीहरू हुँदैनन्। यो crawler:
  • Sitemaps भएको वा नभएको sites मा काम गर्दछ
  • बाह्य sitemaps उत्पन्न गर्दछ (अन्य domains reference गर्ने URLs)
  • Proxies बिना low-spec hardware मा चल्छ
  • ठूला-स्तरका websites कुशलतापूर्वक ह्यान्डल गर्दछ

2. विधि

2.1 Technology Stack

Technologyउद्देश्य
Pythonप्राथमिक भाषा
aiohttpAsynchronous HTTP अनुरोधहरू
BeautifulSoupHTML parsing र link extraction
asyncioConcurrent code execution
SQLitePersistent URL storage
PlaywrightDynamic content rendering
fake_useragentBot detection बच्ने

2.2 Crawler Workflow

  1. Initialization: Start URL normalize गर्ने, robots.txt जाँच गर्ने, database tables सिर्जना गर्ने
  2. URL Fetching: Delays को साथ Asynchronous batch अनुरोधहरू
  3. Link Extraction: Anchor tags parse गर्ने, URLs normalize गर्ने
  4. Data Storage: URLs, errors, बाह्य domains को लागि SQLite
  5. Concurrency: Configurable limit (default: 100 concurrent)
  6. Completion: नयाँ URLs नभएपछि वा limit पुगेपछि रोक्ने

2.4 BFS Algorithm

Crawler ले URLs अन्वेषण गर्न Breadth-First Search प्रयोग गर्दछ:
  • गहिरो जानु अघि हालको depth मा सबै URLs प्रशोधन गर्दछ
  • Level by level व्यवस्थित coverage सुनिश्चित गर्दछ
  • Interrupted भएमा पुनः सुरु गर्न अनुमति दिन्छ

3. परिणामहरू

3.1 Crawling तथ्याङ्कहरू

Website प्रकारआन्तरिक URLsबाह्य References
मनोरञ्जन Site 147,8707,010,999
Gaming Site 2143,0583,027,460
Press Release Site99,2432,136,887
समाचार Site 6117,1641,895,515
सरकारी Site 128,84155,700
शिक्षा Site 150,45828,328
कुल:
  • आन्तरिक URLs: 1,121,407
  • बाह्य References: 18,957,040
मनोरञ्जन/समाचार sites मा सरकारी sites भन्दा धेरै उच्च बाह्य reference ratios छन्, विभिन्न content रणनीतिहरू प्रतिबिम्बित गर्दै।

3.3 SEO Insights

  • Media sites: उच्च बाह्य reference ratio ले विश्वसनीयता बढाउन सक्छ
  • सरकारी sites: आन्तरिक linking मा फोकस उपयुक्त छ
  • धेरैजसो sites को लागि सन्तुलित दृष्टिकोण सिफारिस गरिन्छ

4. Optimizations

Rate Limiting

connector = aiohttp.TCPConnector(limit=100)  # समायोजन योग्य
कम limits ले 429 errors रोक्छ तर crawling ढिलो हुन्छ।

Dynamic Content (SPAs)

Playwright ले JavaScript-rendered content ह्यान्डल गर्दछ।

5. भविष्यका दिशाहरू

  1. Proxy समर्थन: IP blocking जोखिम घटाउने
  2. राम्रो hardware: ठूला crawls ह्यान्डल गर्ने
  3. Scrapy एकीकरण: बलियो framework features को फाइदा लिने
  4. Graph विश्लेषण: Embeddings प्रयोग गरेर website सम्बन्धहरू map गर्ने

सन्दर्भहरू

  1. aiohttp - Python को लागि Asynchronous HTTP client/server
  2. BeautifulSoup - HTML/XML parsing library
  3. Playwright - Browser automation framework
  4. SQLite - Lightweight database engine