Statistik pageviews Wikipedia bisa membantu menemukan topik untuk diteliti lebih jauh. Agar perbandingannya berguna, tetapkan halaman, proyek bahasa, jenis akses, kategori pengunjung, dan periode yang sama sebelum menghitung total.
Saya menyarankan memakai data ini sebagai petunjuk perhatian terhadap halaman tertentu. Jumlah pageviews tidak langsung memberi volume pencarian Google, jumlah orang unik, atau permintaan membeli produk. Untuk memahami pertanyaan pembaca, gabungkan temuan angkanya dengan riset sinyal audiens publik.
Kita akan mengambil dua seri kecil dari API Wikimedia, menyimpan respons mentah, lalu memeriksa apakah keduanya benar-benar dapat dibandingkan. Contohnya memakai halaman Kopi dan Teh di Wikipedia bahasa Indonesia.
Tulis kontrak perbandingan sebelum memilih pemenang
Mulai dari pertanyaan terbatas: bagaimana pageviews dua halaman tersebut pada tujuh hari yang sama?
| Pengaturan | Nilai contoh | Maknanya |
|---|---|---|
| Project | id.wikipedia.org |
Wikipedia bahasa Indonesia |
| Article | Kopi dan Teh |
Dua judul halaman yang diminta |
| Access | all-access |
Gabungan metode akses |
| Agent | user |
Kategori traffic pengguna menurut klasifikasi Wikimedia |
| Granularity | daily |
Satu angka per hari |
| Periode | 1–7 September 2025 | Rentang historis yang sudah berakhir |
| Zona waktu | UTC | Dasar tanggal seri |
| Redirect | Tidak digabung | Hanya judul yang disebut dalam permintaan |
Project bahasa bukan filter negara. Orang yang mengakses Wikipedia bahasa Indonesia tidak otomatis berada di Indonesia. Wikimedia menjelaskan bahwa banyak project dipisahkan berdasarkan bahasa, masing-masing memiliki artikel sendiri. Project dan bahasa Wikimedia.
Kategori user juga bukan daftar orang unik yang telah diverifikasi. Wikimedia memisahkan bot yang mengidentifikasi dirinya serta sebagian traffic otomatis dengan aturan klasifikasi. Metode itu tidak menjamin setiap bot berhasil dikenali. Definisi pageview, penjelasan deteksi bot.
Pastikan judul mewakili objek yang kamu maksud
Buka setiap halaman terlebih dahulu. Istilah yang kamu cari bisa mengarah ke disambiguasi, nama alternatif, atau artikel dengan cakupan berbeda.
Untuk perbandingan niche, gunakan objek yang cukup sebanding. Halaman tentang seluruh kategori kendaraan dan halaman tentang satu model kendaraan menjawab kebutuhan yang berbeda. Angka lebih besar dapat mencerminkan cakupan artikel yang lebih luas.
Catat judul persisnya. Pada URL API, spasi dalam judul bisa diganti underscore, kemudian judul di-URL-encode. Jangan menempelkan judul berisi /, ?, atau karakter khusus ke path tanpa encoding.
Jika halaman pernah berganti nama, periksa log pemindahan dan judul lama sebelum membuat seri jangka panjang. Contoh kita menghitung dua judul yang diminta secara terpisah; ia belum membangun gabungan seluruh riwayat nama.
Ambil dua seri kecil dan simpan responsnya
API memakai endpoint pageviews/per-article. Gunakan User-Agent yang menjelaskan aplikasi dan kontak yang relevan. Jalankan request berurutan, tunggu setiap respons selesai, dan jangan membuat loop retry tanpa batas. Kebijakan akses API Wikimedia.
Simpan script berikut sebagai wikipedia_views.py. Ia membutuhkan Python 3.9 atau lebih baru dan pustaka standar. Saat menjalankan, berikan URL situs atau profil kontak milikmu sebagai argumen, misalnya python wikipedia_views.py https://contoh.id/kontak/.
import json
import sys
from datetime import date, timedelta
from pathlib import Path
from urllib.error import HTTPError
from urllib.parse import quote
from urllib.request import Request, urlopen
if len(sys.argv) != 2 or not sys.argv[1].startswith("https://"):
raise SystemExit("Berikan satu URL kontak HTTPS milikmu.")
contact = sys.argv[1]
if any(ch.isspace() for ch in contact):
raise SystemExit("URL kontak tidak boleh berisi spasi.")
project, access, agent = "id.wikipedia.org", "all-access", "user"
start, end = date(2025, 9, 1), date(2025, 9, 7)
expected = {
(start + timedelta(days=i)).strftime("%Y%m%d00")
for i in range((end - start).days + 1)
}
def summarize(data, title):
seen, total = set(), 0
for row in data["items"]:
assert row["project"] in (project, project.removesuffix(".org"))
assert row["article"] == title
assert row["access"] == access and row["agent"] == agent
assert row["granularity"] == "daily"
stamp = row["timestamp"]
assert stamp in expected and stamp not in seen
assert type(row["views"]) is int and row["views"] >= 0
seen.add(stamp)
total += row["views"]
missing = sorted(expected - seen)
return {
"article": title,
"observed_days": len(seen),
"expected_days": len(expected),
"missing_dates": missing,
"observed_views": total,
"full_period_views": total if not missing else None,
}
for title in ("Kopi", "Teh"):
encoded = quote(title.replace(" ", "_"), safe="")
url = (
"https://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/"
f"{project}/{access}/{agent}/{encoded}/daily/"
f"{start:%Y%m%d}00/{end:%Y%m%d}00"
)
request = Request(url, headers={
"User-Agent": f"EditorialResearch/1.0 ({contact}) Python-urllib",
"Accept": "application/json",
})
try:
with urlopen(request, timeout=30) as response:
raw = response.read()
except HTTPError as error:
print(title, "HTTP", error.code, "belum dinilai")
continue
Path(f"pageviews-{title}.json").write_bytes(raw)
print(json.dumps(summarize(json.loads(raw), title)))
Jalankan tanpa opsi python -O, karena latihan ini memakai assert untuk menghentikan hasil yang melanggar kontrak. Untuk pipeline produksi, ubah pemeriksaan tersebut menjadi error eksplisit dan tambahkan pencatatan waktu pengambilan.
Script menjaga hari yang hilang sebagai masalah yang perlu ditinjau. Ia tidak langsung menyebut jumlah baris yang tersedia sebagai total periode lengkap. Format timestamp harian dibaca sebagai UTC, sesuai contoh pengolahan seri Wikimedia. Tutorial perbandingan metrik halaman.
Cocokkan keluaran dengan contoh aktual
Pada pengambilan data untuk contoh ini, 20 Oktober 2026, kedua request mengembalikan tujuh tanggal yang diminta:
| Tanggal UTC | Kopi | Teh |
|---|---|---|
| 1 September 2025 | 110 | 22 |
| 2 September 2025 | 161 | 43 |
| 3 September 2025 | 113 | 50 |
| 4 September 2025 | 100 | 29 |
| 5 September 2025 | 93 | 40 |
| 6 September 2025 | 118 | 31 |
| 7 September 2025 | 143 | 27 |
| Total | 838 | 242 |
Angka tersebut berasal dari respons API untuk judul Kopi dan judul Teh, dengan filter yang sama.
Kesimpulan yang didukung sangat spesifik: seri untuk judul Kopi memuat lebih banyak pageviews daripada seri Teh dalam rentang dan filter tersebut. Kita belum mengetahui alasan orang membuka halaman, pertanyaan yang mereka bawa, atau apakah mereka akan membaca website kita.
Simpan respons asli beserta URL request, waktu pengambilan, dan perhitungan. Jika angka pada pengambilan lain berbeda, bandingkan sumbernya dahulu. Jangan diam-diam mengganti periode supaya hasil sesuai ide judul yang telanjur dibuat.
Bedakan nol, data belum tersedia, dan kegagalan request
Ini bagian yang mudah merusak analisis. Wikimedia menjelaskan bahwa respons 404 dapat berarti nol pageviews atau data belum dimuat. Nilai nol juga dapat tidak disertakan dalam seri. API tidak selalu dapat membedakan kedua keadaan tersebut. Ketersediaan data dan nilai yang hilang.
Karena itu, gunakan keputusan berikut:
| Kondisi | Tindakan |
|---|---|
| Semua tanggal yang diminta tersedia | Jumlahkan seri dengan filter yang tercatat |
| Ada hari hilang pada periode terbaru | Periksa waktu pemuatan; ulangi secara wajar setelah tersedia |
| Ada hari hilang pada periode historis | Periksa judul, filter, dan masalah dataset sebelum menetapkan nilai nol |
404 |
Simpan sebagai hasil yang masih perlu ditafsirkan |
429 |
Hentikan peningkatan request dan hormati pembatasan layanan |
| Timestamp ganda atau metadata tidak cocok | Hentikan perhitungan dan telusuri sumber masalah |
Jika kemudian kamu mengisi hari hilang dengan nol berdasarkan pemeriksaan yang memadai, simpan keputusan imputasi itu terpisah dari respons asli. Grafik yang terlihat penuh tidak boleh menyembunyikan asumsi.
Perlakukan redirect sebagai bagian definisi dataset
Untuk beberapa nama alternatif, Wikimedia merender isi halaman tujuan sambil tetap mencatat judul redirect yang diminta. Akibatnya, view untuk redirect tidak otomatis masuk pada angka judul utama.
Misalnya kamu membandingkan dua nama merek, tetapi salah satunya mempunyai banyak nama alternatif. Mengambil hanya judul utama pada keduanya belum tentu memberi cakupan yang setara. Perilaku redirect pada penghitungan pageviews.
Pilih salah satu kontrak: membandingkan judul persis, atau membangun kelompok judul beserta redirect yang sudah diperiksa. Jika memakai kelompok, simpan daftar anggotanya dan alasan penggabungan. Jangan menjumlahkan judul yang sama dua kali, dan jangan memasukkan disambiguasi hanya karena memuat kata yang mirip.
Ubah temuan menjadi brief, lalu cari pertanyaan pembaca
Angka pageviews membantu memilih tempat untuk menggali, tetapi belum menyediakan isi artikel yang berguna. Untuk contoh minuman tadi, tulis brief dengan empat bagian:
- Observasi: dua judul, tujuh hari, filter yang sama, total dan tanggal tersedia.
- Hipotesis: mungkin ada kebutuhan penjelasan mengenai aspek tertentu; tulis sebagai dugaan yang perlu diperiksa.
- Pemeriksaan lanjutan: telusuri pertanyaan nyata dari hasil pencarian, sumber audiens, atau data Search Console yang memang kamu miliki.
- Bantuan yang akan dibuat: tutorial, perbandingan atribut, atau penjelasan praktis yang menjawab pertanyaan tersebut dengan sumber yang memadai.
Jangan memberi judul “minuman paling dicari di Indonesia” dari contoh ini. Kita hanya meneliti dua halaman dalam satu project bahasa, dan unitnya pageviews. Bila ingin menerbitkan analisis datanya sendiri, lanjutkan dengan metode artikel berbasis data asli agar pembaca dapat memeriksa metode serta batas kesimpulannya.
Pekerjaan riset selesai ketika orang lain dapat mengulang permintaan, memahami data yang dikecualikan, dan melihat hubungan masuk akal antara observasi dengan pertanyaan yang akan dijawab. Popularitas halaman menjadi bahan pertimbangan editorial, bukan janji ranking atau bukti bahwa semua orang membutuhkan artikel yang sama.




