Panduan lengkap tentang web scraping dengan AWS

Penulis :

Bereaksi :

Komentar

AWS Sederhanakan sepenuhnya proses web scraping. Anda tidak perlu lagi mengelola server atau skrip yang sering crash.

Semua menjadi otomatis dan Anda dapat mengelola jumlah data yang besar tanpa stres.

Web scraping dapat dilakukan dengan AWS.
Web scraping dapat dilakukan dengan AWS. ©Christina untuk Alucare.fr

Apa peran AWS dalam web scraping?

itu pengikisan web memungkinkan Mengambil data secara otomatis di situs web untuk menganalisis atau menggunakannya kembali.

⚠ Namun, perlu diingat bahwa hal ini tidak selalu mudah. Mengelola jutaan halaman, menghindari gangguan, dan memastikan keandalan dapat dengan cepat menjadi masalah yang rumit.

✅ Di situlah’AWS (Amazon Web Services) ikut campur tangan. Platform ini Awan Amazon Mempermudah web scraping dengan Mengotomatisasi pengelolaan server. Dengan mengatasi tantangan teknis, sistem ini juga memastikan bahwa semuanya beroperasi dengan stabil dan aman, bahkan dengan volume data yang sangat besar.

Berikut adalah beberapa poin yang membuktikan bahwa AWS adalah solusi ideal untuk web scraping:

  • 🔥 Skalabilitas Platform ini dapat secara otomatis menyesuaikan kapasitasnya untuk menangani jutaan permintaan tanpa gangguan.
  • 🔥 Keandalan Layanan terkelola AWS meminimalkan risiko gangguan dan memastikan operasional yang berkelanjutan.
  • 🔥 Efisiensi biaya : Berkat model pembayaran sesuai penggunaan (pay-as-you-go), Anda hanya membayar sesuai dengan yang Anda gunakan.
  • 🔥 Keamanan AWS menerapkan langkah-langkah keamanan untuk melindungi data.

Apa saja layanan AWS yang relevan?

AWS menawarkan berbagai layanan yang disesuaikan dengan berbagai kebutuhan web scraping.

  • Perhitungan

➡ AWS Lambda: untuk tugas-tugas kecil.

➡ Amazon EC2: untuk proses yang memakan waktu lama atau membutuhkan banyak sumber daya.

AWS Lambda adalah layanan eksekusi tanpa server, sedangkan AWS EC2 adalah layanan mesin virtual di cloud.
AWS Lambda adalah layanan eksekusi tanpa server, sedangkan AWS EC2 adalah layanan mesin virtual di cloud. ©Christina untuk Alucare.fr
  • Penyimpanan

➡ Amazon S3: untuk menyimpan data mentah, file, atau hasil scraping dengan aman.

➡ Amazon DynamoDB: untuk data terstruktur yang memerlukan pembacaan/penulisan cepat.

  • Orkestrasi

➡ AWS Step Functions: untuk mengelola alur kerja yang kompleks.

  • Layanan lain

➡ Amazon SQS: untuk mengelola antrian permintaan dan mengatur pemrosesan data.

➡ AWS IAM: untuk mengelola akses.

Bagaimana cara membuat scraper serverless dengan AWS Lambda?

Dengan AWS Lambda, Anda tidak perlu mengelola server. AWS yang mengelola seluruh infrastruktur (skalabilitas, ketersediaan, pemeliharaan). Anda hanya perlu menyediakan kode dan konfigurasi Anda.

Ikuti tutorial berikut untuk membuat sebuah Serverless scraper dengan AWS Lambda.

1. Arsitektur dasar serverless scraper

Untuk memulai, kita perlu memvisualisasikan bagaimana berbagai layanan AWS akan bekerja sama.

  • Memilih pemicu

Ini adalah elemen yang menentukan kapan kode Anda harus dijalankan. Anda memiliki CloudWatch dan EventBridge.

Amazon CloudWatch digunakan untuk memantau dan memicu peringatan, sedangkan Amazon EventBridge mengelola peristiwa untuk mengotomatisasi aliran antara layanan.
Amazon CloudWatch digunakan untuk memantau dan memicu peringatan, sementara Amazon EventBridge mengelola peristiwa untuk mengotomatisasi aliran antara layanan. ©Christina untuk Alucare.fr
  • Memilih komputasi

Ini adalah tempat di mana kode Anda dijalankan di cloud. Lambda untuk tugas-tugas singkat dan sporadis, EC2/Fargate jika pekerjaan itu lama atau berat.

  • Memilih penyimpanan

Ini adalah ruang penyimpanan tempat scraper Anda menyimpan hasilnya. S3 untuk berkas JSON/CSV/mentah, DynamoDB Jika Anda membutuhkan akses cepat dan terstruktur.

✅ Secara umum, pemicu mengaktifkan Lambda, Lambda menjalankan proses scraping, dan data disimpan di S3.

2. Persiapan lingkungan

Sebelum melakukan pengkodean, Anda harus memberikan izin dan ruang penyimpanan kepada AWS.

  • Buat peran IAM (izin)
  1. Buka konsol AWS > IAM > Peran.
  2. Buat peran khusus untuk Lambda.
  3. Berikan dua izin penting: Peran Eksekusi Dasar AWS Lambda Untuk mengirim log ke CloudWatch dan izin S3 untuk menulis file ke bucket Anda.
  • Buat bucket S3 (penyimpanan hasil)
  1. Buka konsol AWS > S3.
  2. Buatlah sebuah bucket.
  3. Pastikan pengaturan keamanan tetap aktif.

✅ Dengan semua itu, Anda telah memberikan Lambda hak untuk menulis di S3 dan Anda memiliki tempat untuk menyimpan data Anda.

3. Kode Python untuk AWS Lambda

Sekarang, Anda dapat menulis sebuah Scraping dengan Python, dengan perpustakaan sederhana seperti Requests. Skrip ini akan mengambil halaman dan menyimpan hasilnya di S3.

  • Contoh kode sederhana (dengan requests):  
import json import boto3 import requests import os from datetime import datetime s3_client = boto3.client('s3') def lambda_handler(event, context): # URL yang akan di-scrape (contoh sederhana) url = "https://example.com" response = requests.get(url) # Verifikasi status if response.status_code == 200: # Nama file (dengan timestamp untuk menghindari tabrakan)
        filename = f"scraping_{datetime.utcnow().isoformat()}.html" # Mengirim ke S3 s3_client.put_object( Bucket=os.environ['BUCKET_NAME'], # untuk ditentukan dalam variabel lingkungan Lambda Anda
            Key=filename, Body=response.text, ContentType="text/html" ) return { 'statusCode': 200, 'body': json.dumps(f"Halaman disimpan di {filename}")
        } else: return { 'statusCode': response.status_code, 'body': json.dumps("Kesalahan saat melakukan scraping") }

permintaan memungkinkan untuk mengambil konten halaman web.
boto3 adalah perpustakaan resmi untuk berkomunikasi dengan AWS

  • Pengelolaan dependensi (permintaan atau Scrapy)

Lambda tidak menyediakan requests atau Scrapy secara default, jadi Anda memiliki dua opsi:

👉 Buat paket ZIP

  1. Buatlah sebuah folder di komputer Anda:
mkdir package && cd package pip install requests -t .
  1. Tambahkan file Anda lambda_function.py dalam berkas ini.
  2. Kompres semuanya menjadi .zip dan unggah ke Lambda.

👉 Menggunakan Lambda Layers

  1. Anda membuat lapisan Lambda yang berisi Requests (atau Scrapy jika Anda ingin melakukan scraping yang lebih canggih).
  2. Anda mengaitkan lapisan ini ke fungsi Lambda Anda.

Keuntungan : Lebih bersih jika Anda menggunakan kembali dependensi yang sama di beberapa fungsi.

4. Implementasi dan pengujian

Anda tinggal mengunggah kode Anda dan memastikan bahwa kode tersebut berfungsi.

  • Unggah kode ke Lambda
  1. Masuk ke konsol AWS dan masuk ke layanan Lambda.
  2. Klik Buat fungsilalu pilih Penulis dari awal.
  3. Beri nama pada fungsi Anda (contoh: scraper-lambda) dan pilihlah Runtime Python 3.12 (atau versi yang Anda gunakan).
  4. Hubungkan peran IAM yang telah Anda buat dengan izin S3 + CloudWatch.
  5. Di dalam Kodepilih opsi Unggah dari, kemudian .Berkas ZIP dan impor file Anda lambda_package.zip (yang berisi kode Anda dan dependensi seperti permintaan).
  6. Tambahkan variabel lingkungan: NAMA_BUCKET = nama bucket S3 Anda.
  7. Klik Simpan untuk melindungi fungsi Anda.
  • Menguji fungsi 
  1. Dalam fungsi Lambda Anda, klik Uji.
  2. Buat acara uji coba baru dengan JSON kecil, misalnya:
{ "url": "https://example.com" }
  1. Klik Simpankemudian pada Uji untuk menjalankan fungsi.
  2. Di dalam Catatan, Periksa status: Anda harus melihat kode 200 jika semuanya berjalan lancar.
  3. Buka bucket S3 Anda: Anda akan melihat sebuah file muncul. scraping_xxxx.html.

Apa saja solusi untuk web scraping skala besar?

Untuk mengumpulkan jutaan halaman, diperlukan infrastruktur yang kuat. AWS menawarkan beberapa alat yang memungkinkan peningkatan kapasitas.

1. Menggunakan Scrapy dan AWS Fargate/EC2

Scrapy memungkinkan Anda untuk membangun scraper canggih, dan berkat AWS, dapat dijalankan secara fleksibel dan skalabel sesuai dengan beban kerja.
Scrapy memungkinkan Anda untuk membangun scraper canggih, dan berkat AWS, dapat dijalankan secara fleksibel dan skalabel sesuai dengan beban kerja. ©Christina untuk Alucare.fr

Scrapy Sangat cocok untuk proyek-proyek kompleks. Ini memungkinkan Anda untuk’Tulis kode scraping Anda. Namun secara default, scraper Anda berjalan di komputer Anda, yang cepat mencapai batasannya.

AWS Fargate memungkinkan Anda untuk menjalankan scraper Scrapy Anda di kontainer Docker tanpa pernah mengelola server. Hal ini sangat penting untuk melakukan skalabilitas otomatis.

Amazon EC2 Ini juga merupakan alternatif jika Anda ingin lebih banyak kontrol atas lingkungan Anda.

✅ Secara umum, untuk mengontainerisasi scraper Scrapy:

  • ✔ Anda membuat scraper Scrapy Anda.
  • ✔ Anda memasukkannya ke dalam kontainer Docker.
  • ✔ Anda dapat mengimplementasikan kontainer ini dengan Fargate agar dapat berjalan secara otomatis dalam skala besar.

2. Arsitektur scraping terdistribusi

Anda dapat menggunakan Amazon SQS (Simple Queue Service). Digunakan untuk mengelola antrian URL yang akan di-scrape. Cukup masukkan semua URL Anda ke dalam SQS, lalu gunakan beberapa fungsi Lambda atau beberapa kontainer (di EC2 atau Fargate). mengambil URL-URL tersebut secara paralel untuk memulai proses scraping.

Ini memungkinkan Anda untuk membagi pekerjaan sambil terus maju.

3. Mengelola proxy dan permintaan yang diblokir

Perlu diketahui bahwa banyak situs memblokir scraper dengan mendeteksi terlalu banyak permintaan atau dengan menyaring alamat IP tertentu.

Solusinya adalah:

  • Itu rotasi alamat IP melalui AWS atau layanan khusus.
  • Penggunaan proxy pihak ketiga sebagai Data Cerah Di mana ScrapingBee yang secara otomatis mengelola rotasi dan anti-blokir.
Bright Data adalah infrastruktur data web tak terbatas untuk kecerdasan buatan (AI) dan analitik bisnis (BI).
Bright Data adalah infrastruktur data web tak terbatas untuk AI dan BI. ©Christina untuk Alucare.fr

Apa saja solusi untuk masalah umum dalam web scraping dengan AMS?

Hambatan selalu ada dalam web scraping: kesalahan jaringan, pemblokiran, biaya tak terduga, dan sebagainya. Keuntungannya, AWS sudah menyediakan alat untuk mendiagnosis dan memperbaiki masalah-masalah tersebut dengan cepat.

Menganalisis log dengan Amazon CloudWatch

Ketika fungsi Lambda atau instance EC2 gagal, sulit untuk mengetahui asal mula kesalahan tanpa visibilitas.

✅ Solusi dengan Amazon CloudWatch : Semua log disimpan secara terpusat dan dapat diakses. Anda dapat mengidentifikasi kesalahan umum seperti:

  • Timeouts (permintaan memakan waktu terlalu lama).
  • Kesalahan 403 Forbidden (Situs ini memblokir scraper Anda).
  • Kesalahan 429 Too Many Requests (terlalu banyak permintaan yang dikirim).
  • Kekurangan memori atau dependensi yang hilang di Lambda.

💡 Konfigurasikan Peringatan CloudWatch untuk mendapatkan pemberitahuan otomatis segera setelah kesalahan terjadi terlalu sering.

Pengelolaan Kesalahan Permintaan

Sebuah scraper dapat mengalami kegagalan total jika satu permintaan saja tidak berhasil.

Menggunakan pengelolaan kesalahan dalam Python dengan coba...kecuali. Hal ini mencegah program berhenti secara tiba-tiba.

Strategi pengulangan (percobaan ulang):

  • Coba lagi setelah jeda singkat, lalu tingkatkan waktu tunggu secara bertahap (exponential backoff).
  • Beralih antara beberapa proxy jika alamat IP diblokir.
  • Sesuaikan frekuensi permintaan agar tidak terdeteksi.

Pemantauan biaya

Sebuah scraper yang tidak dioptimalkan dengan baik dapat menghasilkan ribuan panggilan Lambda atau menjalankan instance EC2 yang besar secara tidak perlu. Hal ini dapat menyebabkan biaya yang jauh lebih tinggi dari yang diperkirakan.

✅ Solusi dengan AWS Billing : Memantau penggunaan setiap layanan (Lambda, EC2, S3, proxy).

✅ Tips untuk mengoptimalkan :

  • Untuk Lambda: mengurangi penggunaan memori atau membatasi durasi eksekusi.
  • Untuk EC2: pilih instance yang sesuai atau gunakan Spot Instances (lebih murah, tetapi dapat dihentikan kapan saja).
  • Aktifkan peringatan anggaran AWS untuk mendapatkan pemberitahuan sebelum melebihi batas yang ditentukan.

FAQ

Apakah web scraping dengan AWS legal?

Tergantung.

Itu legalitas web scraping Bervariasi tergantung pada negara, data yang dikumpulkan, dan cara Anda menggunakannya. Beberapa situs juga melarang scraping dalam syarat dan ketentuannya.

Apa pendekatan terbaik untuk web scraping dengan AWS?

EC2 dan Fargate adalah dua pendekatan yang sangat baik untuk web scraping dengan AWS.
EC2 dan Fargate adalah dua pendekatan yang sangat baik untuk web scraping dengan AWS. ©Christina untuk Alucare.fr

Semua tergantung pada proyek Anda:

  • AWS Lambda : untuk scraper kecil yang cepat.
  • EC2 : untuk proyek-proyek yang lebih besar.
  • Fargate : untuk pengikisan terdistribusi.

Apakah saya dapat menggunakan Selenium di AWS Lambda untuk web scraping?

👉 Ya, tapi itu lebih rumit.

Selenium atau lainnya browser tanpa antarmuka seperti Puppeteer sangat penting untuk melakukan Scraping dalam JavaScript. Namun, konfigurasi mereka di Lambda memerlukan optimasi (ukuran paket, pengelolaan dependensi).

Bagaimana cara menghindari diblokir oleh situs web di AWS?

Situs web dapat mendeteksi scraper dan memblokir permintaan. Berikut adalah beberapa taktik umum untuk mengurangi risiko:

  • ✔ Ubah User-Agent secara teratur.
  • Tambahkan penundaan acak antara permintaan.
  • Menggunakan proxy yang berputar.
  • Hindari mengirim terlalu banyak permintaan pada saat yang sama dari alamat IP yang sama.

Bagaimana cara mengintegrasikan data yang telah di-scrape ke dalam basis data?

Setelah data dikumpulkan, Anda dapat memasukkannya ke dalam basis data relasional seperti Amazon RDS (MySQL, PostgreSQL, dll.).

Amazon RDS adalah layanan cloud yang memudahkan pengelolaan basis data relasional seperti MySQL, PostgreSQL, dan lain-lain.
Amazon RDS adalah layanan cloud yang memudahkan pengelolaan basis data relasional seperti MySQL, PostgreSQL, dan lainnya. ©Christina untuk Alucare.fr

Praktik yang baik adalah Membersihkan dan mengorganisir data sebelum dimasukkan, kemudian’mengotomatisasi integrasi melalui skrip Python atau pipeline. Hal ini memastikan basis yang bersih dan siap untuk digunakan.

👌 Singkatnya, dengan menggabungkan kekuatan dari’AWS dan praktik terbaik dalam scraping, Anda dapat mengekstrak data dengan efisien dan aman. Jangan ragu untuk berbagi pengalaman Anda di kolom komentar!

Suka? Bagikan!

Konten ini aslinya adalah di Perancis (Lihat editor tepat di bawah). Buku ini telah diterjemahkan dan dikoreksi dalam berbagai bahasa menggunakan Deepl dan/atau Google Translate API untuk menawarkan bantuan di sebanyak mungkin negara. Penerjemahan ini menghabiskan biaya beberapa ribu euro per bulan. Jika terjemahan ini tidak 100 % sempurna, tinggalkan komentar agar kami dapat memperbaikinya. Jika Anda tertarik untuk mengoreksi dan meningkatkan kualitas artikel yang diterjemahkan, silakan kirim email kepada kami menggunakan formulir kontak!
Kami menghargai umpan balik Anda untuk meningkatkan konten kami. Jika Anda ingin memberikan saran perbaikan, silakan gunakan formulir kontak kami atau tinggalkan komentar di bawah ini. Komentar Anda selalu membantu kami meningkatkan kualitas situs web kami Alucare.fr


Alucare adalah media independen. Dukung kami dengan menambahkan kami ke favorit Google News Anda:

Kirimkan komentar di forum diskusi