Web scraping dengan Ajax: Panduan Lengkap

Penulis :

Bereaksi :

Komentar

Dengan Ajax, sebuah halaman tidak menampilkan semuanya sekaligus: beberapa informasi muncul secara bertahap.

itu Pengambilan data web dengan Ajax oleh karena itu, terdiri dari penggunaan metode khusus untuk mengambil data dinamis ini.

Web scraping juga berfungsi dengan AJAX.
Web scraping juga berfungsi dengan AJAX. ©Christina untuk Alucare.fr

Hal-hal penting yang perlu diingat tentang web scraping dan AJAX

Sebagai pengingat, fitur pengikisan web adalah teknik yang memungkinkan untuk mengamati sebuah situs web dan mengumpulkan informasi secara otomatis. Dalam praktiknya, hal ini melibatkan analisis kode HTML suatu halaman untuk mengekstrak data yang berguna.

AJAX (Asynchronous JavaScript and XML) adalah teknologi yang memungkinkan sebuah situs web untuk memuat atau memperbarui informasi tanpa perlu memuat ulang seluruh halaman.

👉 Bagaimana cara kerjanya?

Browser mengirimkan data kecil permintaan asinkron ke server di latar belakang. Server merespons dengan data, dan halaman menampilkannya secara langsung, tanpa mengisi ulang sisanya dari konten.

Singkatnya, AJAX menampilkan informasi baru di halaman tanpa perlu memuat ulang seluruh halaman. Hal ini membuat web menjadi lebih cepat dan interaktif, namun proses scraping menjadi lebih kompleks.

AJAX memungkinkan pemuatan data di latar belakang tanpa perlu memuat ulang seluruh halaman.
AJAX memungkinkan pemuatan data di latar belakang tanpa perlu memuat ulang seluruh halaman. ©Christina untuk Alucare.fr

👉 Mengapa lebih kompleks?

  • Konten yang dihasilkan oleh AJAX :

Ketika sebuah situs menggunakan AJAX untuk memuat konten di latar belakang, konten tersebut tidak langsung terlihat di kode sumber HTML awal. Ini berarti bahwa scraper konvensional, yang hanya menganalisis HTML halaman saat halaman tersebut dimuat, tidak akan dapat melihat atau mengumpulkan informasi tersebut sebelum informasi tersebut benar-benar dimuat oleh AJAX.

  • Scraper dan konten dinamis :

Sebuah scraper klasik hanya dapat melihat konten statis. Data yang dimuat secara dinamis melalui AJAX tidak dapat dianalisis olehnya. Untuk mengambilnya, perlu menggunakan browser headless atau API yang mampu menjalankan JavaScript dan mensimulasikan permintaan AJAX.

Apa saja metode dan alat untuk melakukan scraping AJAX?

Untuk meng-scrape situs web yang menggunakan AJAX, terdapat beberapa metode yang dapat digunakan.

Metode 1: Reproduksi Permintaan AJAX

Ini adalah metode yang paling efektif untuk Mengambil data dinamis.

Prinsipnya sederhana : Alih-alih memuat seluruh halaman, kita menangkap permintaan AJAX yang dikirim ke server dan langsung mereproduksinya untuk mendapatkan data mentah.

✅ Ini adalah sebuah metode:

  • Sangat cepat.
  • Sedikit., karena tidak memerlukan rendering halaman secara lengkap.
  • Siapa yang mengabaikan masalah? terkait dengan rendering JavaScript.

❌ Sebaliknya:

  • Ini adalah lebih kompleks yang perlu diterapkan.
  • Membutuhkan analisis yang cermat permintaan dan parameter.

🌐 Mengenai alat dan perpustakaan, yang disebutkan antara lain:

JS dan Python menyediakan dua perpustakaan untuk mereproduksi permintaan AJAX: axios dan requests.
JS dan Python menyediakan dua perpustakaan untuk mereplikasi permintaan AJAX: axios dan requests. ©Christina untuk Alucare.fr

Metode 2: Menggunakan browser “headless”

Ini adalah metode paling sederhana untuk Menggores halaman dinamis.

itu Prinsipnya adalah mengotomatiskan browser web yang sebenarnya. Tanpa antarmuka grafis agar halaman ditampilkan persis seperti yang akan dilakukan oleh pengguna.

✅ Metode ini:

  • Gores dengan tepat Apa yang dilihat pengguna.
  • Timur mudah diterapkan.

❌ Namun, dia adalah:

  • Lebih lambat.
  • Mengonsumsi banyak sumber daya.

🌐 Alat atau perpustakaan yang akan digunakan adalah:

  • Selenium : sistem otomatisasi serbaguna untuk browser.
  • Penulis naskah : modern, cepat, multi-browser.
  • Dalang : khusus untuk Chrome/Chromium.
Puppeteer, Playwright, dan Selenium adalah alat yang mengotomatisasi browser web untuk mengekstrak data dari halaman web dinamis.
Puppeteer, Playwright, dan Selenium adalah alat yang mengotomatisasi browser web untuk mengekstrak data dari halaman dinamis. ©Christina untuk Alucare.fr

Alat-alat ini sangat populer untuk scraping web dengan Python.

Metode 3: API Scraping “All-in-One”

Beberapa platform menawarkan Layanan lengkap untuk scraping. Contohnya: Data Cerah, ZenRows, ScrapingBee, Crawlbase.

Mereka secara otomatis mengelola Perenderan JavaScriptyang proxy danekstraksi data.

✅ Platform-platform ini:

  • Sangat sederhana dan andal.
  • Tidak memerlukan aTidak ada pengelolaan infrastruktur.

❌ Namun:

  • itu Biaya terkadang tinggi..
  • Ada kurang kontrol tentang proses.
Bright Data adalah API scraping "all-in-one"
Bright Data adalah API scraping “all-in-one”. ©Christina untuk Alucare.fr

Bagaimana cara meng-scrape situs web yang menggunakan AJAX?

Setelah menjelaskan metode teoritis, mari kita lihat bagaimana cara meng-scrape situs yang memuat artikelnya melalui AJAX secara praktis dengan contoh konkret dalam Python.

  1. Menganalisis permintaan AJAX dengan alat pengembangan
  • ✔ Buka alat pengembangan dari browser Anda (F12 atau klik kanan > “Inspect”).
  • ✔ Buka tab “Jaringan” dan muat ulang halaman.
  • ✔ Anda dapat mengamati Permintaan yang dilakukan oleh situs, termasuk yang memuat artikel melalui AJAX.
  • ✔ Cari permintaan jenis “XHR” atau “fetch” yang bertanggung jawab atas pemuatan data.
  1. Memilih metode 

Setelah Anda mengidentifikasi permintaan AJAX yang mengambil data, Anda memiliki dua opsi:

  • ❎ Pengulangan permintaan: Anda dapat dengan mudah mereplikasi permintaan yang sama dalam Python menggunakan perpustakaan seperti permintaan. Hal ini memungkinkan Anda untuk mendapatkan data secara langsung dalam format JSON atau HTML.
  • Browser tanpa antarmuka pengguna: Jika situs menggunakan interaksi yang lebih kompleks atau memerlukan eksekusi JavaScript untuk menampilkan data, Anda dapat memilih browser headless seperti Penulis naskah Di mana Selenium, yang memungkinkan Anda untuk mengakses dan berinteraksi dengan situs web seperti pengguna sungguhan.
  1. Menulis kode
impor permintaan # URL permintaan AJAX yang telah Anda identifikasi url = 'https://example.com/ajax-endpoint'

# Parameter permintaan (contoh, disesuaikan dengan data yang diamati) params = { 'page': 1, 'category': 'technology' } # Mengirim permintaan GET untuk mendapatkan data response = requests.get(url, params=params)

# Memeriksa apakah permintaan berhasil if response.status_code == 200: # Menampilkan data JSON data = response.json() print(data) else: print(f"Kesalahan {response.status_code}")

👉 Penjelasan terperinci :

  • permintaan impor : Mengimpor perpustakaan “requests” untuk mengirim permintaan HTTP.
  • https://example.com/ajax-endpoint Ganti URL ini dengan URL permintaan AJAX yang terlihat di alat pengembangan.
  • Kode status 200 berarti permintaan telah diproses dengan sukses.
  • response.json() Mengonversi respons JSON menjadi kamus Python.
  • print(data) : Tampilan data yang diekstraksi (misalnya, daftar artikel atau informasi lainnya).
  • lainnya Jika permintaan gagal (kode status lain), kesalahan akan ditampilkan.
  • print(f"Kesalahan {response.status_code}") : Menampilkan kode kesalahan (misalnya, 404 untuk “Tidak Ditemukan”).
  1. Mengekstrak data dari JSON atau HTML yang telah dirender

Setelah Anda mendapatkan respons dari permintaan AJAX, biasanya dalam format JSON atau HTML, Anda harus mengekstrak data yang relevan.

  • Jika data dalam format JSON: Anda dapat menggunakan response.json() untuk mengubahnya menjadi kamus Python. Kemudian, Anda dapat mengakses nilai-nilai spesifik menggunakan kunci JSON.
  • Jika data dalam format HTML: Anda dapat menggunakan BeautifulSoup dari perpustakaan bs4 untuk menganalisis HTML dan mengekstrak informasi yang diinginkan.

Metode scraping AJAX mana yang harus dipilih?

Menghadapi berbagai pendekatan yang mungkin, sangat penting untuk membandingkan metode scraping AJAX agar dapat memilih yang paling sesuai dengan kebutuhan Anda.

metode Kecepatan Kompleksitas Biaya Terbaik untuk …
Pengulangan permintaan Sangat cepat Tinggi Rendah Pengumpulan data skala besar, data terstruktur.
Browser Tanpa Antarmuka Lambat Berarti Rendah Proyek cepat, situs kompleks, pemula.
API Scraping Cepat Sangat rendah Tinggi Proyek kritis, tanpa pemeliharaan infrastruktur.

Apa saja tantangan dalam scraping AJAX dan solusinya?

Sebelum terjun ke dalam scraping AJAX, Anda harus memahami tantangannya, dan terutama trik untuk mengatasinya.

Tantangan 1: Konten yang tidak terlihat pada pandangan pertama

➡ Seperti yang telah dilihat, saat Anda memuat halaman menggunakan AJAX, seluruh konten tidak langsung muncul dalam kode sumber. HTML awal terkadang kosong, dan data hanya tiba setelah JavaScript dijalankan.

✅ Solusinya adalah menggunakan alat yang mampu untuk “Menampilkan” halaman web, seperti browser tanpa antarmuka. Mereka menjalankan JavaScript dan mengambil konten persis seperti pengguna manusia.

Tantangan 2: Identifikasi permintaan AJAX

➡ Menemukan permintaan AJAX yang tepat tidak selalu mudah. Data dapat tersembunyi dalam berbagai panggilan jaringan, dicampur dengan file-file lain.

✅ Solusinya:

  • Buka alat pengembangan browser (F12 > tab Jaringan/Network).
  • Mencari permintaan XHR/Fetch untuk mengidentifikasi yang mengembalikan JSON.
  • Setelah permintaan yang tepat diidentifikasi, Anda dapat melakukannya. menggandakan dengan perpustakaan seperti requests atau axios.

Tantangan 3: Pengelolaan waktu pengiriman

➡ Data yang dimuat oleh AJAX dapat membutuhkan waktu untuk muncul. Jika scraper membaca halaman terlalu cepat, ia tidak akan menemukan apa pun.

✅ Untuk itu, diperlukan:

  • Menggunakan tidur (jeda tetap dalam detik) untuk menunggu sebelum membaca halaman.
  • Menggunakan menunggu tersirat/tersurat.

Tunggu secara implisit : menunggu secara otomatis hingga elemen-elemen tersebut tersedia.
Tunggu secara eksplisit : menunggu secara tepat suatu elemen atau kondisi yang telah ditentukan.

FAQ

Apakah saya dapat menggunakan BeautifulSoup untuk meng-scrape situs web yang menggunakan AJAX?

❌ Tidak langsung.

BeautifulSoup adalah perpustakaan parsing statis: ia hanya membaca HTML yang dimuat secara awal.

👉 Karena AJAX memuat konten di latar belakang melalui JavaScript, maka perlu Lengkapi BeautifulSoup dengan alat yang mampu menjalankan JavaScript ini (Selenium Di mana Penulis naskah) atau langsung mengintercept permintaan AJAX.

Bagaimana cara menangani kesalahan autentikasi atau header sesi saat melakukan scraping pada situs AJAX?

Situs yang dilindungi dapat menampilkan kesalahan 401 (tidak diizinkan) atau 403 (dilarang) jika permintaan tidak mengandung informasi yang benar. cookie Di mana Header HTTP.

✅ Solusinya adalah Mencegat informasi tersebut (cookies, tokens, headers) saat navigasi awal, kemudian menggunakannya kembali dalam permintaan AJAX yang disimulasikan.

Bagaimana cara meng-scrape situs web dengan fitur “infinite scrolling” atau tombol “Load More”?

itu “scrolling tak terbatas” adalah bentuk pemuatan AJAX. Untuk mengotomatiskannya, Anda perlu:

  • 🔥 Mengidentifikasi permintaan AJAX yang memuat konten tambahan dan menampilkannya;
  • 🔥 Di mana Meniru klik pada tombol “Muat Lebih Banyak” melalui browser headless seperti Selenium atau Puppeteer, hingga mencapai semua data.

Apakah ada ekstensi Chrome untuk scraping AJAX?

Ya, beberapa Ekstensi Chrome memudahkan proses scraping. AJAX untuk kebutuhan sederhana, tanpa perlu coding.

Di antara yang paling terkenal, antara lain:

  • Pengikis Web
  • Penambang Data
  • Pengikis Data Instan
Instant Data Scraper adalah ekstensi Chrome yang memungkinkan Anda mengumpulkan data dari halaman web dengan mudah tanpa perlu coding.
Instant Data Scraper adalah ekstensi Chrome yang memungkinkan Anda mengumpulkan data dari halaman web dengan mudah tanpa perlu coding. ©Christina untuk Alucare.fr

Apa perbedaan antara “wait” eksplisit dan implisit dengan Selenium/Playwright?

  • A tunggu secara implisit adalah penundaan global yang diterapkan pada semua elemen. Artinya, skrip akan menunggu selama waktu tertentu sebelum menampilkan pesan kesalahan jika suatu elemen tidak muncul.
  • A tunggu secara eksplisit adalah penundaan bersyarat untuk elemen tertentu. Ia hanya menunggu ketika diperlukan, hingga kondisi tertentu terpenuhi.

Dalam praktiknya, “Wait eksplisit” lebih disarankan untuk menghindari penundaan yang tidak perlu dan kesalahan.

💬 Secara umum, Menggores dengan AJAX Membutuhkan sedikit lebih banyak keahlian, tetapi dengan metode yang tepat, tidak ada yang terlewatkan.

Dan Anda, metode apa yang Anda gunakan untuk meng-scrape situs AJAX? Bagikan tips 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