28 lines
2.1 KiB
Markdown
28 lines
2.1 KiB
Markdown
# Langkah 1 - Mengikis Billboard Hot 100
|
|
|
|
🌐 **English** · [Dansk](Step-1-Scrape-the-Billboard-da) · [Bahasa Melayu](Step-1-Scrape-the-Billboard-ms)
|
|
|
|
## Apa yang dilakukan oleh langkah ini
|
|
|
|
Program meminta satu tarikh dalam format `YYYY-MM-DD`, membuat permintaan ke `https://appbrewery.github.io/bakeboard-hot-100/<date>/` dan membaca 100 lagu daripada HTML. Bakeboard ialah klon Billboard Hot 100 yang disediakan kursus, kerana laman sebenar boleh berubah atau menambah tembok bayaran pada bila-bila masa.
|
|
|
|
```bash
|
|
python -m musical_time_machine --list-only
|
|
```
|
|
|
|
Laman Bakeboard bagi 2026-04-18:
|
|
|
|

|
|
|
|
Output program (dipaparkan daripada teks larian sebenar, bukan gambar tetingkap terminal):
|
|
|
|

|
|
|
|
## Apa yang kita pelajari
|
|
|
|
- **Membaca laman web sebagai data.** `BeautifulSoup` menukar HTML menjadi pepohon, dan pemilih CSS (`div.chart-entry`, `h3.chart-entry__title`) memilih bahagian yang kita mahu. Kita menemui pemilih tersebut dengan melihat penanda halaman terlebih dahulu.
|
|
- **Menjadi klien yang sopan.** Sesuatu permintaan membawa pengepala; `User-Agent` memberitahu pelayan jenis klien yang meminta. `timeout` dan `raise_for_status()` menjadikan halaman yang perlahan atau tiada gagal dengan jelas dan bukannya tergantung.
|
|
- **Mengesahkan input di sempadan.** `parse_chart_date` hanya menerima tarikh `YYYY-MM-DD` yang sebenar, jadi bahagian lain program tidak pernah menerima tarikh yang salah.
|
|
- **Menguji tanpa rangkaian.** Laman carta disimpan di bawah `tests/fixtures/`, dan pengikis menerima pengambil halamannya sebagai parameter, jadi ujian memeriksa 100 lagu tanpa satu permintaan pun.
|
|
- **Menyimpan pengetahuan di satu tempat.** URL, pemilih dan mesej berada dalam `constants.py`; jika Bakeboard mengubah penandanya, hanya satu fail yang berubah.
|