21 คะแนน โดย GN⁺ 2024-07-11 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • Crawlee เป็นไลบรารี Python สำหรับเว็บสแครปปิงและระบบอัตโนมัติของเบราว์เซอร์
  • ช่วยให้สร้างครอว์เลอร์ที่เชื่อถือได้อย่างรวดเร็ว
  • สามารถใช้ดึงข้อมูลสำหรับ AI, LLM, RAG, GPT
  • สามารถดาวน์โหลดไฟล์อย่าง HTML, PDF, JPG, PNG จากเว็บไซต์ได้
  • ทำงานร่วมกับ BeautifulSoup, Playwright และ HTTP แบบล้วนได้
  • รองรับทั้งโหมด Headful และโหมด Headless
  • มีฟีเจอร์หมุนเวียนพร็อกซี

คุณสมบัติ

  • มีอินเทอร์เฟซแบบรวมสำหรับการครอว์ลิงผ่าน HTTP และเบราว์เซอร์แบบ Headless
  • ครอว์ลิงแบบขนานอัตโนมัติตามทรัพยากรระบบที่มีอยู่
  • เขียนด้วย Python ที่ใช้ type hints ช่วยให้ IDE ทำ autocomplete ได้ดีขึ้นและลดบั๊ก
  • มีฟีเจอร์ลองใหม่อัตโนมัติเมื่อเกิดข้อผิดพลาดหรือถูกบล็อก
  • มีการหมุนเวียนพร็อกซีและการจัดการเซสชันในตัว
  • การกำหนดเส้นทางคำขอที่ปรับแต่งได้ - ส่ง URL ไปยังแฮนด์เลอร์ที่เหมาะสมโดยตรง
  • มีคิวถาวรสำหรับ URL ที่จะครอว์ล
  • มีสตอเรจแบบปลั๊กอินสำหรับทั้งข้อมูลแบบตารางและไฟล์
  • มีความสามารถด้านการจัดการข้อผิดพลาดที่แข็งแกร่ง

ความแตกต่างจาก Scrapy

  • Crawlee รองรับการครอว์ลิงด้วยเบราว์เซอร์แบบ Headless (Playwright) เป็นพื้นฐาน
  • อินเทอร์เฟซเรียบง่ายและสวยงาม - ตั้งค่าสแครปเปอร์ได้ด้วยโค้ดไม่ถึง 10 บรรทัด
  • รองรับ type hints อย่างสมบูรณ์
  • สร้างบนมาตรฐาน Asyncio

ความเห็นของ GN⁺

  • Crawlee ดูเป็นเครื่องมือที่ทรงพลังสำหรับเว็บสแครปปิงและการครอว์ลิง โดยเฉพาะการรองรับการครอว์ลิงบนเบราว์เซอร์แบบ Headless เป็นพื้นฐาน ซึ่งถือเป็นจุดเด่นสำคัญ
  • สามารถสร้างครอว์เลอร์ได้ด้วยอินเทอร์เฟซที่เรียบง่ายและโค้ดปริมาณน้อย จึงดูมีประสิทธิภาพในการพัฒนาสูง อีกทั้งยังใช้ type hints อย่างจริงจัง ทำให้ประสบการณ์การพัฒนาดีขึ้นและลดโอกาสเกิดข้อผิดพลาด
  • หากเป็นโปรเจ็กต์ที่ต้องครอว์ลิงเพื่อดึงข้อมูล ก็นับว่า Crawlee เป็นตัวเลือกที่ควรพิจารณาอย่างมาก โดยเฉพาะหากต้องครอว์ลหน้าเว็บที่ต้องอาศัยการเรนเดอร์ JavaScript, PlaywrightCrawler น่าจะมีประโยชน์
  • อย่างไรก็ตาม หากต้องการการครอว์ลิงขนาดใหญ่มากหรือความเป็นเรียลไทม์มีความสำคัญ การใช้ Scrapy หรือเครื่องมืออื่นที่รองรับการครอว์ลิงแบบกระจายอาจเหมาะกว่า
  • ควรตรวจสอบนโยบายการครอว์ลิงและประเด็นด้านกฎหมายให้เพียงพอก่อนนำไปใช้งาน

2 ความคิดเห็น

 
yangeok 2024-07-15

รู้อยู่ว่ารองรับ Node แต่ดูเหมือนว่าจะรองรับ Python ด้วยนะครับ ถ้าเป็นสแครปเปอร์ที่ต้องบำรุงรักษาระยะยาว ก็คงต้องคิดเรื่องเฟรมเวิร์กกันอย่างจริงจังเลยครับ 55

 
GN⁺ 2024-07-11
ความคิดเห็นบน Hacker News
  • การจัดทำเอกสารสำหรับความสามารถที่มีอยู่เดิมเป็นเรื่องสำคัญ ไม่ว่าแพลตฟอร์มเว็บสแครปปิงจะยอดเยี่ยมแค่ไหนก็ไม่มีประโยชน์หากมีแต่ผู้สร้างที่เข้าใจ

    • ตัวอย่างเช่น เข้าใจความหมายของ tiered_proxy_urls: list[list[str]] | None = None ได้ยาก
    • ตัวอย่างควรแสดงวิธีค้นหาและดาวน์โหลดข้อมูลทุกชนิด เช่น ตาราง .csv, .xlsx เป็นต้น
    • การดึงแค่ข้อความและค้นหา URL เป็นสิ่งที่ใคร ๆ ก็ทำได้
    • ควรมีตัวอย่างที่พาร์สรายการที่แตกต่างกัน 1000 รายการ และดึงข้อมูล 3-5 รายการผ่านเอนด์พอยต์ที่ต่างกัน
    • ยังไม่ชัดเจนว่าเครื่องมือนี้เป็นเฟรมเวิร์กหรือเครื่องมืออัตโนมัติ
    • สงสัยว่ารองรับโปรโตคอล opt-out สำหรับเว็บสแครปปิงหรือไม่ (เช่น Robots.txt, HTTP และแท็กเนื้อหา) โดยเฉพาะหลังจากคำสั่ง DSM ของสหภาพยุโรป เรื่องนี้ยิ่งสำคัญ
  • ขอบคุณ Apify/Crawlee มาก ในฐานะผู้ใช้ Node.js มานาน ไลบรารีนี้ทำงานได้ดีที่สุด

  • ตอนกำลังหา stack สำหรับโปรเจ็กต์ ผมเจอ Crawlee เดิมทีอยากได้ไลบรารี Python แต่สุดท้ายใช้ Crawlee กับ Typescript และทำโปรเจ็กต์เสร็จภายในหนึ่งสัปดาห์

    • API ดีกว่า Python scraping API ทุกตัวที่เคยใช้มาอย่างมาก
    • การผสานรวมกับ Playwright ทำให้ประสบการณ์การเขียนโปรแกรมสะดวกมาก
    • ใช้งานได้ดีกับงานจับเว็บไซต์ที่เรนเดอร์ฝั่งฟรอนต์เอนด์และการดักจับ XHR response ที่ถูกแก้ไข
    • มีแผนจะขยายต่อโดยใช้แพลตฟอร์ม Apify
  • สงสัยว่ามันต่างจาก Scrapy อย่างไร

  • สงสัยว่าเหตุผลในการย้ายมาจากไลบรารีอื่นคืออะไร ผมสร้าง crawler ของตัวเองไว้แล้ว แต่ยังไม่เห็นจุดที่โดดเด่นเป็นพิเศษ

  • โค้ด Python สมัยใหม่ดูดีมาก

    • ในโค้ดตัวอย่าง const data = await crawler.get_data() ดูเหมือน Javascript เหมือนขาด underscore ไป
  • ขอเสนอให้นำโค้ดสั้น ๆ จาก test case มาใช้เป็นตัวอย่างในเอกสารมากขึ้น งานดีมาก

  • เครื่องมือสแครปปิงยินดีต้อนรับเสมอ ตั้งใจว่าจะลองใช้กับโปรเจ็กต์ส่วนตัว ตอนนี้ด้วย AI การทำสแครปปิงก็เหมือนขายพลั่วในยุคตื่นทอง