บทที่ 09 · Web Crawler

ออกแบบ Web Crawler

Web Crawler หรือ Spider/Robot ใช้ค้นพบและรวบรวมเนื้อหาเว็บ เช่น Web Pages, Images และ Videos บทนี้มุ่งเน้นการออกแบบ Web Crawler ที่ขยายได้สำหรับ Search Engine Indexing

บทนำ

Web Crawler หรือ Spider/Robot ใช้ค้นพบและรวบรวมเนื้อหาเว็บ เช่น Web Pages, Images และ Videos บทนี้มุ่งเน้นการออกแบบ Web Crawler ที่ขยายได้สำหรับ Search Engine Indexing

การใช้งาน Web Crawlers

ความท้าทายในการออกแบบ

ข้อกำหนด

Components

1. Seed URLs

จุดเริ่มต้นสำหรับ Crawler - ต้องเลือกจุดเริ่มที่ดีเพื่อ Traverse Links ให้ได้มากที่สุด

2. URL Frontier

เก็บ URLs ที่ต้อง Download - Implement เป็น FIFO Queue

3. HTML Downloader

Download Web Pages จาก URLs ที่ URL Frontier จัดเตรียมไว้

4. DNS Resolver

แปลง URLs เป็น IP Addresses

5. Content Parser

ตรวจสอบและ Parse Web Pages - ละเว้น Pages ที่เสีย

6. Content Seen?

ตรวจสอบ Duplicate Content โดยเปรียบเทียบ Hash Values

7. Content Storage

จัดเก็บ HTML Pages บน Disk (Content ยอดนิยมใน Memory เพื่อลด Latency)

8. URL Extractor

แยก Links ใหม่จาก Parsed Pages

9. URL Filter

กัน URLs ที่ถูก Blacklist หรือผิดพลาดออก

10. URL Seen?

ติดตาม URLs ที่เยี่ยมชมแล้วเพื่อหลีกเลี่ยง Duplication

Workflow

  1. เพิ่ม Seed URLs ไปยัง URL Frontier
  2. HTML Downloader ดึง URLs และ Resolve IPs ผ่าน DNS Resolver
  3. Content Parser ตรวจสอบและส่งต่อ Content ไปยัง "Content Seen?"
  4. หาก Content ใหม่ แยก Links ผ่าน URL Extractor
  5. กรองและเพิ่ม Links ที่ไม่ซ้ำไปยัง URL Frontier

URL Frontier - Politeness & Priority

Politeness

Priority

การหลีกเลี่ยงปัญหา

เนื้อหานี้อ้างอิงจาก ByteByteGo - System Design Interview - An Insider's Guide