52 คะแนน โดย xguru 2026-03-10 | 3 ความคิดเห็น | แชร์ทาง WhatsApp
  • หลบเลี่ยงโครงสร้างที่ซับซ้อนของเว็บสมัยใหม่และระบบแอนตี้บอต พร้อมรองรับตั้งแต่การส่งคำขอเดี่ยวไปจนถึง การครอว์ลขนาดใหญ่
  • มี parser อัจฉริยะ ในตัวที่สามารถค้นหาองค์ประกอบใหม่โดยอัตโนมัติเมื่อโครงสร้างเว็บไซต์เปลี่ยน
  • มี โมดูล Fetcher ในตัวที่สามารถหลบเลี่ยงระบบความปลอดภัยหลักอย่าง Cloudflare Turnstile ได้เป็นค่าเริ่มต้น
  • รองรับ ความสามารถสำหรับการครอว์ลขนาดใหญ่ ผ่าน เฟรมเวิร์ก Spider เช่น การประมวลผลพร้อมกัน การจัดการเซสชัน การหยุดชั่วคราว/ทำงานต่อ และการสลับพร็อกซี
    • API คล้าย Scrapy: ใช้ start_urls, callback parse แบบอะซิงก์ และออบเจ็กต์ Request/Response
    • ครอว์ลพร้อมกันและแยกเซสชัน: รันหลายเบราว์เซอร์เซสชันแบบขนานได้
    • ฟังก์ชันหยุดชั่วคราวและทำงานต่อบนพื้นฐาน Checkpoint : มีเสถียรภาพแม้ครอว์ลเป็นเวลานาน
    • โหมดสตรีมมิงแบบเรียลไทม์: ประมวลผลข้อมูลที่เก็บได้ทันทีหรือสะท้อนไปยัง UI ได้
    • ตรวจจับคำขอที่ถูกบล็อกโดยอัตโนมัติ และสามารถลองใหม่ด้วยลอจิกแบบกำหนดเองได้
    • ใช้ Hook เพื่อส่งออกผลลัพธ์ไปยังไปป์ไลน์ของตนเองได้ (JSON/JSONL)
  • การดึงข้อมูลเว็บไซต์ขั้นสูง ที่รองรับเซสชัน
    • คลาส Fetcher รองรับ ความสามารถการส่งคำขอขั้นสูง เช่น HTTP/3, การปลอมลายนิ้วมือ TLS และการอำพรางเฮดเดอร์
    • ทำ ระบบอัตโนมัติเบราว์เซอร์บนพื้นฐาน Playwright/Chrome ผ่าน DynamicFetcher
    • StealthyFetcher สามารถหลบเลี่ยงการป้องกันแอนตี้บอตอย่าง Cloudflare Turnstile ได้อัตโนมัติ
    • ใช้ ProxyRotator เพื่อสลับพร็อกซีในระดับต่อคำขอและ ควบคุมการบล็อกตามโดเมน ได้
    • Fetcher ทุกตัวทำงานแบบ อะซิงก์ (async) และมีคลาสเซสชัน (FetcherSession, DynamicSession เป็นต้น) ให้ใช้งาน
  • Adaptive Scraping ช่วยค้นหาองค์ประกอบใหม่โดยอัตโนมัติแม้เว็บไซต์จะเปลี่ยนหลังจากนั้น
    • อัลกอริทึมติดตามองค์ประกอบบนพื้นฐานความคล้ายคลึง: เก็บข้อมูลได้ทนทานต่อการเปลี่ยนโครงสร้าง
    • รองรับตัวเลือกแบบ CSS/XPath/ข้อความ/regex ทั้งหมด
    • มี เซิร์ฟเวอร์ MCP สำหรับการผสาน AI ในตัว: ทำ การดึงข้อมูลแบบมี AI ช่วย ร่วมกับ Claude, Cursor เป็นต้น
      • ก่อนเรียกใช้ AI, Scrapling จะคัดเลือกคอนเทนต์เป้าหมายก่อนเพื่อ ลดการใช้โทเคนและเพิ่มความเร็ว
  • สถาปัตยกรรมประสิทธิภาพสูง
    • ให้ความเร็วในการประมวลผลที่เหนือกว่าไลบรารีสแครป Python ส่วนใหญ่
    • ทำงานได้เบาด้วย โครงสร้างที่ใช้หน่วยความจำอย่างมีประสิทธิภาพ และ lazy loading
    • ความเร็วในการ serialize JSON เพิ่มขึ้น 10 เท่า, ครอบคลุมการทดสอบ 92% และ มี static type hints ครบถ้วน
    • ผ่านการ พิสูจน์ในงานจริง (battle-tested) แล้วจากคอมมูนิตี้เว็บสแครปจำนวนมาก
  • มอบประสบการณ์ที่เป็นมิตรกับนักพัฒนา/นักทำเว็บสแครป
    • มี Web Scraping Shell แบบโต้ตอบ ในตัว: รองรับการสำรวจแบบเรียลไทม์และการแปลงคำขอบนพื้นฐาน IPython
    • ใช้ คำสั่ง CLI เพื่อสแครป URL และดึงไฟล์ได้โดยไม่ต้องเขียนโค้ด
    • มี DOM traversal API สำหรับสำรวจความสัมพันธ์แบบพ่อแม่/พี่น้อง/ลูก และความสามารถในการ ค้นหาองค์ประกอบที่คล้ายกัน
    • มี ตัวสร้าง selector อัตโนมัติ เพื่อสร้าง CSS/XPath selector ที่เสถียรโดยอัตโนมัติ
    • API คล้าย Scrapy/BeautifulSoup: มอบประสบการณ์พัฒนาที่คุ้นเคยสำหรับผู้ใช้เดิม
    • เสริมความสะดวกในการดีพลอยด้วย การวิเคราะห์แบบสแตติกบนพื้นฐาน PyRight/MyPy และ การสร้าง Docker image อัตโนมัติ
  • เบนช์มาร์กประสิทธิภาพ
    • parser ของ Scrapling เร็วกว่า Parsel/Scrapy เล็กน้อย และ
      ทำความเร็วได้ สูงสุดมากกว่า 700 เท่า เมื่อเทียบกับ BeautifulSoup4 (bs4)
    • ประสิทธิภาพการค้นหาองค์ประกอบตามความคล้ายคลึง ก็ทำได้ เร็วกว่า 5 เท่า เมื่อเทียบกับ AutoScraper
  • ติดตั้งได้ด้วย pip install scrapling หรือ
    มี Docker image ให้ใช้งานเพื่อจัดสภาพแวดล้อมการทำงานแบบครบถ้วนรวมเบราว์เซอร์ docker pull pyd4vinci/scrapling
  • ไลเซนส์ BSD-3-Clause

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

 
eyelove 2026-03-11

ตามกฎหมายไม่มีปัญหาใช่ไหมครับ??? ผมเคยเห็นมาว่าการดึงข้อมูลออนไลน์ไปนั้นไม่ถือว่ามีปัญหา..
แต่อยากรู้ว่าถ้าเลี่ยงข้อจำกัดที่เว็บไซต์ตั้งไว้เพื่อไม่ให้ครอว์ล แล้วเข้าไปอ่าน จะไม่มีความเสียหายอะไรหรือเปล่า

หรือว่ามีความเสี่ยงเฉพาะข้อมูลที่ดูได้หลังล็อกอินเท่านั้น?

 
crawler 2026-03-10

> with FetcherSession(impersonate='chrome') as session: # Use latest version of Chrome's TLS fingerprint

น่าสนใจดีนะครับ ปกติผมต้องค้นหาแล้วใส่เองแบบแมนนวลตลอด นี่เป็นครั้งแรกที่เห็นไลบรารีแบบนี้ คิดว่าน่าจะสะดวกดี

 
crawler 2026-03-10

แต่ก็ยังสงสัยอยู่ว่าเขาข้าม Cloudflare กันยังไง คงต้องดูโค้ดสักรอบถึงจะรู้