ekstraksi semua baris data kode, mata kuliah, kelas dan dosen dari https://akademik.its.ac.id/list_kelas.php. abaikan yang kelasnya M00. sajikan dalam bentuk csv dengan script PHP
========================
Berikut adalah contoh script PHP untuk mengekstraksi data dari URL `https://akademik.its.ac.id/list_kelas.php`, mengabaikan kelas dengan kode "M00", dan menyimpan hasilnya dalam format CSV.
### Script PHP:
```php
<?php
// URL target
$url = "https://akademik.its.ac.id/list_kelas.php";
// Inisialisasi cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Eksekusi cURL dan ambil konten HTML
$html_content = curl_exec($ch);
// Periksa apakah request berhasil
if ($html_content === false) {
die("Gagal mengambil data dari URL.");
}
// Tutup koneksi cURL
curl_close($ch);
// Gunakan DOMDocument untuk parsing HTML
$dom = new DOMDocument();
libxml_use_internal_errors(true); // Suppress warnings for invalid HTML
$dom->loadHTML($html_content);
libxml_clear_errors();
// Inisialisasi DOMXPath untuk query
$xpath = new DOMXPath($dom);
// Cari semua baris data dalam tabel
$rows = $xpath->query('//tr[contains(@class, "NormalBG") or contains(@class, "AlternateBG")]');
// Array untuk menyimpan hasil ekstraksi
$extracted_data = [];
// Loop melalui setiap baris
foreach ($rows as $row) {
// Ekstrak kolom-kolom yang relevan
$cols = $row->getElementsByTagName('td');
if ($cols->length >= 7) { // Pastikan baris memiliki cukup kolom
$kode = $cols->item(0)->textContent;
$mata_kuliah = $cols->item(1)->textContent;
$kelas = $cols->item(3)->textContent;
// Ekstrak informasi dosen dan jadwal
$dosen_info = $cols->item(6)->textContent;
$dosen = (trim($dosen_info) != "- tidak terdata -") ? trim(explode("-", $dosen_info)[0]) : "Tidak terdata";
// Abaikan kelas dengan kode "M00"
if ($kelas != "M00") {
$extracted_data[] = [$kode, $mata_kuliah, $kelas, $dosen];
}
}
}
// Simpan hasil ke dalam file CSV
$csv_file = fopen("extracted_data.csv", "w");
// Tulis header
fputcsv($csv_file, ["Kode", "Mata Kuliah", "Kelas", "Dosen"]);
// Tulis data
foreach ($extracted_data as $row) {
fputcsv($csv_file, $row);
}
// Tutup file CSV
fclose($csv_file);
echo "Data berhasil diekstraksi dan disimpan ke extracted_data.csv";
?>
```
### Penjelasan Script:
1. **Mengambil Konten HTML**:
- Menggunakan `cURL` untuk mengambil konten HTML dari URL.
- Jika request gagal, script akan berhenti dan menampilkan pesan error.
2. **Parsing HTML**:
- Menggunakan `DOMDocument` dan `DOMXPath` untuk mem-parsing dan mengekstraksi data dari HTML.
- `libxml_use_internal_errors(true)` digunakan untuk menekan peringatan jika HTML tidak valid.
3. **Ekstraksi Data**:
- Mencari semua baris dengan class `NormalBG` atau `AlternateBG`.
- Mengekstrak kode mata kuliah, nama mata kuliah, kelas, dan informasi dosen.
- Mengabaikan baris dengan kelas "M00".
4. **Simpan ke CSV**:
- Menggunakan `fputcsv` untuk menulis data ke file CSV.
- File CSV disimpan dengan nama `extracted_data.csv`.
### Output:
Setelah menjalankan script, file `extracted_data.csv` akan berisi data seperti berikut:
```csv
Kode,Mata Kuliah,Kelas,Dosen
EF234612,Animasi Komputer dan Pemodelan 3D,T,Siska Arifiani, S.Kom., M.Kom.
EF234615,Audit Sistem,T,Prof. Drs.Ec. Ir. Riyanarto Sarno, M.Sc., Ph.D.
EF234712,Big Data (EN),T,Ratih Nur Esti Anggraini, S.Kom, M.Sc., Ph.D.
EF234605,Capstone Project,T,Ir. Suhadi Lili, M.T.I.
EF234619,Deep Learning,T,Prof. Dr.Eng. Chastine Fatichah, S.Kom., M.Kom.
EF234614,Desain Pengalaman Pengguna (EN),T,Hadziq Fabroyir, S.Kom., Ph.D.
EF234701,Etika Profesi (EN),A,Ir. Ary Mazharuddin Shiddiqi, S.Kom., M.Comp.Sc., Ph.D.
EF234613,Game Edukasi dan Simulasi,T,Imam Kuswardayan, S.Kom, M.T
EF234602,Interaksi Manusia dan Komputer,A,Dr. Anny Yuniarti, S.Kom., M.Comp.Sc.
EF234602,Interaksi Manusia dan Komputer,B,Siska Arifiani, S.Kom., M.Kom.
EF234602,Interaksi Manusia dan Komputer,C,Dr. Anny Yuniarti, S.Kom., M.Comp.Sc.
```
### Catatan:
1. **Autentikasi**: Jika situs web memerlukan login, Anda perlu menambahkan session atau cookie yang valid ke dalam request cURL. Contoh:
```php
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); // Simpan cookie
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); // Gunakan cookie
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'username' => 'your_username',
'password' => 'your_password'
]));
curl_setopt($ch, CURLOPT_URL, 'https://akademik.its.ac.id/login.php');
curl_exec($ch); // Login
```
2. **Perizinan**: Pastikan Anda memiliki izin untuk mengakses dan mengekstraksi data dari situs web tersebut.
3. **Error Handling**: Tambahkan penanganan error yang lebih baik jika diperlukan, terutama untuk kasus-kasus seperti jaringan bermasalah atau perubahan struktur HTML.
0 komentar :
Speak up your mind
Tell us what you're thinking... !