Crawlee mencakup crawling dan scraping Anda secara menyeluruh dan membantu Anda membuat scraper yang andal. Cepat.
Crawlee untuk Python terbuka untuk pengguna awal!
Perayap Anda akan tampak hampir mirip manusia dan tidak terdeteksi radar perlindungan bot modern bahkan dengan konfigurasi default. Crawlee memberi Anda alat untuk merayapi web untuk mencari tautan, mengikis data, dan menyimpannya secara terus-menerus dalam format yang dapat dibaca mesin, tanpa harus mengkhawatirkan detail teknisnya. Dan berkat opsi konfigurasi yang kaya, Anda dapat mengubah hampir semua aspek Crawlee agar sesuai dengan kebutuhan proyek Anda jika pengaturan default tidak sesuai.
Lihat dokumentasi lengkap, panduan, dan contoh di situs web proyek Crawlee ?
Kami juga memiliki implementasi TypeScript pada Crawlee, yang dapat Anda jelajahi dan manfaatkan untuk proyek Anda. Kunjungi repositori GitHub kami untuk informasi lebih lanjut Crawlee untuk JS/TS di GitHub.
Kami merekomendasikan mengunjungi tutorial Pengenalan di dokumentasi Crawlee untuk informasi lebih lanjut.
Crawlee tersedia sebagai paket PyPI crawlee
. Fungsionalitas inti disertakan dalam paket dasar, dengan fitur tambahan tersedia sebagai tambahan opsional untuk meminimalkan ukuran dan ketergantungan paket. Untuk menginstal Crawlee dengan semua fitur, jalankan perintah berikut:
pip install ' crawlee[all] '
Kemudian, instal dependensi Playwright:
playwright install
Verifikasi bahwa Crawlee berhasil diinstal:
python -c ' import crawlee; print(crawlee.__version__) '
Untuk petunjuk instalasi terperinci, lihat halaman Dokumentasi pengaturan.
Cara tercepat untuk memulai Crawlee adalah dengan menggunakan Crawlee CLI dan memilih salah satu template yang telah disiapkan. Pertama, pastikan Anda telah menginstal Pipx:
pipx --help
Lalu, jalankan CLI dan pilih dari templat yang tersedia:
pipx run crawlee create my-crawler
Jika Anda sudah menginstal crawlee
, Anda dapat menjalankannya dengan menjalankan:
crawlee create my-crawler
Berikut adalah beberapa contoh praktis untuk membantu Anda memulai dengan berbagai jenis crawler di Crawlee. Setiap contoh menunjukkan cara menyiapkan dan menjalankan crawler untuk kasus penggunaan tertentu, apakah Anda perlu menangani halaman HTML sederhana atau berinteraksi dengan situs yang banyak menggunakan JavaScript. Perayap yang dijalankan akan membuat direktori storage/
di direktori kerja Anda saat ini.
BeautifulSoupCrawler
mengunduh halaman web menggunakan perpustakaan HTTP dan menyediakan konten yang diurai HTML kepada pengguna. Secara default menggunakan HttpxHttpClient
untuk komunikasi HTTP dan BeautifulSoup untuk parsing HTML. Ini ideal untuk proyek yang memerlukan ekstraksi data yang efisien dari konten HTML. Crawler ini memiliki performa yang sangat baik karena tidak menggunakan browser. Namun, jika Anda perlu menjalankan JavaScript sisi klien untuk mendapatkan konten Anda, ini tidak akan cukup dan Anda harus menggunakan PlaywrightCrawler
. Juga jika Anda ingin menggunakan crawler ini, pastikan Anda menginstal crawlee
dengan beautifulsoup
extra.
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
menggunakan browser tanpa kepala untuk mengunduh halaman web dan menyediakan API untuk ekstraksi data. Itu dibangun di Playwright, perpustakaan otomatisasi yang dirancang untuk mengelola browser tanpa kepala. Ini unggul dalam mengambil halaman web yang mengandalkan JavaScript sisi klien untuk pembuatan konten, atau tugas yang memerlukan interaksi dengan konten berbasis JavaScript. Untuk skenario di mana eksekusi JavaScript tidak diperlukan atau diperlukan kinerja yang lebih tinggi, pertimbangkan untuk menggunakan BeautifulSoupCrawler
. Juga jika Anda ingin menggunakan crawler ini, pastikan Anda menginstal crawlee
dengan playwright
extra.
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 ())
Jelajahi halaman Contoh kami di dokumentasi Crawlee untuk berbagai kasus penggunaan dan demonstrasi tambahan.
Mengapa Crawlee adalah pilihan yang lebih disukai untuk web scraping dan crawling?
Crawlee bersifat open-source dan berjalan di mana saja, namun karena dikembangkan oleh Apify, mudah untuk diatur di platform Apify dan dijalankan di cloud. Kunjungi situs web Apify SDK untuk mempelajari lebih lanjut tentang penerapan Crawlee ke platform Apify.
Jika Anda menemukan bug atau masalah apa pun dengan Crawlee, silakan kirimkan masalah di GitHub. Untuk pertanyaan, Anda dapat bertanya di Stack Overflow, di Diskusi GitHub, atau Anda dapat bergabung dengan server Discord kami.
Kontribusi kode Anda diterima, dan Anda akan dipuji selamanya! Jika Anda mempunyai ide untuk perbaikan, kirimkan masalah atau buat permintaan penarikan. Untuk pedoman kontribusi dan kode etik, lihat CONTRIBUTING.md.
Proyek ini dilisensikan di bawah Lisensi Apache 2.0 - lihat file LISENSI untuk detailnya.