Crawlee ครอบคลุมการรวบรวมข้อมูลและการขูดตั้งแต่ต้นจนจบ และ ช่วยคุณสร้างเครื่องขูดที่เชื่อถือได้ เร็ว.
Crawlee สำหรับ Python เปิดให้ผู้ใช้งานกลุ่มแรกๆ!
โปรแกรมรวบรวมข้อมูลของคุณจะปรากฏเกือบเหมือนมนุษย์และอยู่ภายใต้เรดาร์ของการป้องกันบอทสมัยใหม่ แม้ว่าจะมีการกำหนดค่าเริ่มต้นก็ตาม Crawlee มอบเครื่องมือในการรวบรวมข้อมูลเว็บเพื่อหาลิงก์ ขูดข้อมูล และจัดเก็บข้อมูลในรูปแบบที่เครื่องอ่านได้อย่างต่อเนื่อง โดยไม่ต้องกังวลกับรายละเอียดทางเทคนิค และด้วยตัวเลือกการกำหนดค่าที่หลากหลาย คุณสามารถปรับแต่ง Crawlee ได้เกือบทุกด้านเพื่อให้เหมาะกับความต้องการของโปรเจ็กต์ของคุณ หากการตั้งค่าเริ่มต้นไม่ลดลง
ดูเอกสาร คำแนะนำ และตัวอย่างฉบับเต็มได้ที่เว็บไซต์โครงการ Crawlee ?
นอกจากนี้เรายังมีการใช้งาน TypeScript ของ Crawlee ซึ่งคุณสามารถสำรวจและใช้สำหรับโครงการของคุณได้ เยี่ยมชมพื้นที่เก็บข้อมูล GitHub ของเราเพื่อดูข้อมูลเพิ่มเติม Crawlee สำหรับ JS/TS บน GitHub
เราขอแนะนำให้ไปที่บทช่วยสอนบทนำในเอกสารของ Crawlee เพื่อดูข้อมูลเพิ่มเติม
Crawlee มีให้บริการในรูปแบบแพ็คเกจ PyPI crawlee
ฟังก์ชันการทำงานหลักจะรวมอยู่ในแพ็คเกจพื้นฐาน พร้อมด้วยคุณสมบัติเพิ่มเติมที่มีให้เป็นตัวเลือกเสริมเพื่อลดขนาดแพ็คเกจและการขึ้นต่อกัน หากต้องการติดตั้ง Crawlee ด้วยคุณสมบัติทั้งหมด ให้รันคำสั่งต่อไปนี้:
pip install ' crawlee[all] '
จากนั้น ติดตั้งการพึ่งพา Playwright:
playwright install
ตรวจสอบว่าติดตั้ง Crawlee สำเร็จแล้ว:
python -c ' import crawlee; print(crawlee.__version__) '
สำหรับคำแนะนำในการติดตั้งโดยละเอียด โปรดดูหน้าเอกสารการตั้งค่า
วิธีที่เร็วที่สุดในการเริ่มต้นใช้งาน Crawlee คือการใช้ Crawlee CLI และเลือกหนึ่งในเทมเพลตที่เตรียมไว้ ขั้นแรก ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Pipx แล้ว:
pipx --help
จากนั้น รัน CLI และเลือกจากเทมเพลตที่มีอยู่:
pipx run crawlee create my-crawler
หากคุณได้ติดตั้ง crawlee
ไว้แล้ว คุณสามารถเปิดใช้งานได้โดยการรัน:
crawlee create my-crawler
ต่อไปนี้เป็นตัวอย่างที่เป็นประโยชน์บางส่วนเพื่อช่วยให้คุณเริ่มต้นใช้งานโปรแกรมรวบรวมข้อมูลประเภทต่างๆ ใน Crawlee แต่ละตัวอย่างจะสาธิตวิธีตั้งค่าและเรียกใช้โปรแกรมรวบรวมข้อมูลสำหรับกรณีการใช้งานเฉพาะ ไม่ว่าคุณจะต้องจัดการหน้า HTML แบบง่ายหรือโต้ตอบกับไซต์ที่ใช้ JavaScript จำนวนมากก็ตาม การเรียกใช้โปรแกรมรวบรวมข้อมูลจะสร้าง storage/
ไดเร็กทอรีในไดเร็กทอรีการทำงานปัจจุบันของคุณ
BeautifulSoupCrawler
ดาวน์โหลดหน้าเว็บโดยใช้ไลบรารี HTTP และจัดเตรียมเนื้อหาที่แยกวิเคราะห์ HTML ให้กับผู้ใช้ ตามค่าเริ่มต้นจะใช้ HttpxHttpClient
สำหรับการสื่อสาร HTTP และ BeautifulSoup สำหรับการแยกวิเคราะห์ HTML เหมาะสำหรับโครงการที่ต้องการการดึงข้อมูลจากเนื้อหา HTML อย่างมีประสิทธิภาพ โปรแกรมรวบรวมข้อมูลนี้มีประสิทธิภาพที่ดีมากเนื่องจากไม่ได้ใช้เบราว์เซอร์ อย่างไรก็ตาม หากคุณต้องการรัน JavaScript ฝั่งไคลเอ็นต์เพื่อรับเนื้อหา การดำเนินการนี้จะยังไม่เพียงพอ และคุณจะต้องใช้ PlaywrightCrawler
นอกจากนี้ หากคุณต้องการใช้โปรแกรมรวบรวมข้อมูลนี้ ตรวจสอบให้แน่ใจว่าคุณติดตั้ง crawlee
ข้อมูลที่มี beautifulsoup
พิเศษ
import asyncio
from crawlee . beautifulsoup_crawler import BeautifulSoupCrawler , BeautifulSoupCrawlingContext
async def main () -> None :
crawler = BeautifulSoupCrawler (
# Limit the crawl to max requests. Remove or increase it for crawling all links.
max_requests_per_crawl = 10 ,
)
# Define the default request handler, which will be called for every request.
@ crawler . router . default_handler
async def request_handler ( context : BeautifulSoupCrawlingContext ) -> None :
context . log . info ( f'Processing { context . request . url } ...' )
# Extract data from the page.
data = {
'url' : context . request . url ,
'title' : context . soup . title . string if context . soup . title else None ,
}
# Push the extracted data to the default dataset.
await context . push_data ( data )
# Enqueue all links found on the page.
await context . enqueue_links ()
# Run the crawler with the initial list of URLs.
await crawler . run ([ 'https://crawlee.dev' ])
if __name__ == '__main__' :
asyncio . run ( main ())
PlaywrightCrawler
ใช้เบราว์เซอร์ที่ไม่มีส่วนหัวเพื่อดาวน์โหลดหน้าเว็บและจัดเตรียม API สำหรับการดึงข้อมูล มันถูกสร้างขึ้นบน Playwright ซึ่งเป็นไลบรารีอัตโนมัติที่ออกแบบมาเพื่อจัดการเบราว์เซอร์ที่ไม่มีหัว มีความยอดเยี่ยมในการดึงข้อมูลหน้าเว็บที่ต้องอาศัย JavaScript ฝั่งไคลเอ็นต์สำหรับการสร้างเนื้อหา หรืองานที่ต้องโต้ตอบกับเนื้อหาที่ขับเคลื่อนด้วย JavaScript สำหรับสถานการณ์ที่ไม่จำเป็นต้องเรียกใช้ JavaScript หรือจำเป็นต้องมีประสิทธิภาพที่สูงกว่า ให้พิจารณาใช้ BeautifulSoupCrawler
นอกจากนี้ หากคุณต้องการใช้โปรแกรมรวบรวมข้อมูลนี้ ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง crawlee
ข้อมูลที่มี playwright
เพิ่มเติม
import asyncio
from crawlee . playwright_crawler import PlaywrightCrawler , PlaywrightCrawlingContext
async def main () -> None :
crawler = PlaywrightCrawler (
# Limit the crawl to max requests. Remove or increase it for crawling all links.
max_requests_per_crawl = 10 ,
)
# Define the default request handler, which will be called for every request.
@ crawler . router . default_handler
async def request_handler ( context : PlaywrightCrawlingContext ) -> None :
context . log . info ( f'Processing { context . request . url } ...' )
# Extract data from the page.
data = {
'url' : context . request . url ,
'title' : await context . page . title (),
}
# Push the extracted data to the default dataset.
await context . push_data ( data )
# Enqueue all links found on the page.
await context . enqueue_links ()
# Run the crawler with the initial list of requests.
await crawler . run ([ 'https://crawlee.dev' ])
if __name__ == '__main__' :
asyncio . run ( main ())
สำรวจหน้าตัวอย่างของเราในเอกสารประกอบของ Crawlee เพื่อดูกรณีการใช้งานและการสาธิตเพิ่มเติมที่หลากหลาย
เหตุใด Crawlee จึงเป็นตัวเลือกที่ต้องการสำหรับการขูดและรวบรวมข้อมูลเว็บ
Crawlee เป็นโอเพ่นซอร์สและทำงานได้ทุกที่ แต่เนื่องจาก Apify พัฒนาขึ้น จึงตั้งค่าบนแพลตฟอร์ม Apify และทำงานบนคลาวด์ได้อย่างง่ายดาย เยี่ยมชมเว็บไซต์ Apify SDK เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการปรับใช้ Crawlee กับแพลตฟอร์ม Apify
หากคุณพบข้อบกพร่องหรือปัญหาใดๆ กับ Crawlee โปรดส่งปัญหาบน GitHub หากมีคำถาม คุณสามารถถามได้ที่ Stack Overflow ใน GitHub Discussions หรือคุณสามารถเข้าร่วมเซิร์ฟเวอร์ Discord ของเราได้
เรายินดีต้อนรับการมีส่วนร่วมในโค้ดของคุณ และคุณจะได้รับคำชมตลอดไป! หากคุณมีแนวคิดในการปรับปรุง โปรดส่งปัญหาหรือสร้างคำขอดึงข้อมูล สำหรับแนวทางการบริจาคและจรรยาบรรณ โปรดดูที่ CONTRIBUTING.md
โครงการนี้ได้รับอนุญาตภายใต้ Apache License 2.0 - ดูรายละเอียดในไฟล์ LICENSE