- 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 ความคิดเห็น
รู้อยู่ว่ารองรับ Node แต่ดูเหมือนว่าจะรองรับ Python ด้วยนะครับ ถ้าเป็นสแครปเปอร์ที่ต้องบำรุงรักษาระยะยาว ก็คงต้องคิดเรื่องเฟรมเวิร์กกันอย่างจริงจังเลยครับ 55
ความคิดเห็นบน Hacker News
การจัดทำเอกสารสำหรับความสามารถที่มีอยู่เดิมเป็นเรื่องสำคัญ ไม่ว่าแพลตฟอร์มเว็บสแครปปิงจะยอดเยี่ยมแค่ไหนก็ไม่มีประโยชน์หากมีแต่ผู้สร้างที่เข้าใจ
tiered_proxy_urls: list[list[str]] | None = Noneได้ยากขอบคุณ Apify/Crawlee มาก ในฐานะผู้ใช้ Node.js มานาน ไลบรารีนี้ทำงานได้ดีที่สุด
ตอนกำลังหา stack สำหรับโปรเจ็กต์ ผมเจอ Crawlee เดิมทีอยากได้ไลบรารี Python แต่สุดท้ายใช้ Crawlee กับ Typescript และทำโปรเจ็กต์เสร็จภายในหนึ่งสัปดาห์
สงสัยว่ามันต่างจาก Scrapy อย่างไร
สงสัยว่าเหตุผลในการย้ายมาจากไลบรารีอื่นคืออะไร ผมสร้าง crawler ของตัวเองไว้แล้ว แต่ยังไม่เห็นจุดที่โดดเด่นเป็นพิเศษ
โค้ด Python สมัยใหม่ดูดีมาก
const data = await crawler.get_data()ดูเหมือน Javascript เหมือนขาด underscore ไปขอเสนอให้นำโค้ดสั้น ๆ จาก test case มาใช้เป็นตัวอย่างในเอกสารมากขึ้น งานดีมาก
เครื่องมือสแครปปิงยินดีต้อนรับเสมอ ตั้งใจว่าจะลองใช้กับโปรเจ็กต์ส่วนตัว ตอนนี้ด้วย AI การทำสแครปปิงก็เหมือนขายพลั่วในยุคตื่นทอง