Ekstrak data JSON dari permintaan XHR

Permintaan XHR-baca-ekstrak-JSON-sampul

Mengekstrak data JSON dari permintaan XHR – contoh praktis saya

 

 

Titik awal

Saya ingin mengekstrak data produk dari situs e-commerce – harga, nama, ketersediaan. Akan tetapi, dengan pengikisan HTML klasik (misalnya dengan BeautifulSoup), DOM-nya kosong. Tidak ada data yang terlihat, hanya beberapa tempat penampung.

Namun semuanya ada di browser. Kecurigaan: Data dimuat ulang melalui JavaScript – biasanya melalui permintaan XHR dengan respons JSON.

⚙️ Alat saya

Sasarannya bukanlah mengotomatiskan keseluruhan peramban, tetapi menemukan sumber data langsung dan menanyakannya melalui HTTP. Saya menggunakan yang berikut ini:

  • Browser DevTools (tab Jaringan, filter XHR)
  • Ular piton + httpx (juga bekerja dengan requests)
  • Penguraian JSON dan rekayasa balik tajuk

Masalah & Pengamatan

  • Halaman tersebut tidak menampilkan konten apa pun dalam HTML – semuanya muncul secara tidak sinkron.
  • Permintaan XHR memiliki titik akhir yang samar seperti /api/v3/productinfo?sku=123456
  • Tanpa header yang sesuai (terutama User-Agent, Accept, Referer) → 403 Forbidden
  • Beberapa parameter seperti session_id memang diperlukan, tapi statis

Larutan

1. Permintaan XHR dilacak di DevTools

Mengidentifikasi permintaan yang benar di browser (Chrome atau Firefox → DevTools → Jaringan → XHR). Berisi muatan JSON lengkap dengan data produk.

2. URL, header & parameter kueri disalin

Klik kanan pada Permintaan → “Salin sebagai cURL” → dikonversi ke Python + httpx.

3. Kode Python Minimal

import httpx

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)...",
    "Accept": "application/json, text/plain, */*",
    "Referer": "https://zielseite.de/produkt/123456",
}

url = "https://zielseite.de/api/v3/productinfo?sku=123456"

r = httpx.get(url, headers=headers)
data = r.json()

print(data)

4. JSON diurai

Jawabannya termasuk:

  • data["price"]["value"]
  • data["availability"]["status"]
  • data["product"]["title"]

Apa yang saya pelajari

  • XHR seringkali merupakan alternatif yang lebih sederhana untuk pengikisan DOM
  • Tanpa menyalin header, seringkali tidak ada yang berhasil
  • “Salin sebagai cURL” sangat berharga saat membangun kembali
  • Anda terhindar dari kebutuhan akan browser tanpa kepala jika API cukup publik

Bonus: Jika tidak berhasil

Beberapa permintaan XHR berisi token dinamis (CSRF, session_id) yang dibuat ulang setiap kali halaman diakses. Mungkin Anda memerlukan browser sungguhan – misalnya B. Penulis Naskah Drama atau Dalang – untuk mendapatkan token terlebih dahulu.

Kesimpulan

Jika suatu halaman terlihat kosong setelah dimuat, ada baiknya untuk melihat tab jaringan. Seringkali data sebenarnya ada dalam respons JSON – dan lebih mudah diambil daripada yang Anda kira.

Uji coba dan kode mulai 04/2025 – dapat berubah tergantung pada halaman arahan.

Nama saya Kadek dan saya seorang pelajar dari Indonesia dan sedang belajar ilmu komputer di Jerman. Blog ini berfungsi sebagai platform di mana saya dapat berbagi pengetahuan tentang topik-topik seperti web scraping, screen scraping, penambangan data web, pengumpulan web, ekstraksi data web, dan penguraian data web.