PHP Web Parser
Script ini merupakan sebuah class
yang saya buat secara ngawur yang pada awalnya digunakan untuk mengambil konten suatu web pemerintahan
yang isinya kemudian di-post ke dalam web lain via xmlrpc, gara-gara parser yang biasanya dipakai sedang mengalami
"kemabukan heavy voodoo". Entah itu yang mabok si squeeze atau java, yang jelas program
aslinya jadi ndak jalan.
Strukturnya dibagi menjadi 2 bagian besar yaitu:
- Halaman Index
- Halaman Konten
Halaman Index merupakan halaman yang memuat judul-judul berita, yang bentuk umumnya kira-kira seperti ini:
Sebuah Pesawat Jatuh Di Kasur
Telah dilaporkan bahwa sebuah pesawat yang mengangkut nyamuk yang sedang terbang melintasi
kamar terjatuh ke kasur karena diceblek oleh ...
Seekor Kodok Tewas Mengenaskan
Waru, 9 Februari 2020, seekor kodok ditemukan tewas mengenaskan setelah tertimpa puing-puing
reruntuhan mesin cuci rusak. Tampaknya mesin cuci tersebut sudah sekian lama tak dipakai
sehingga tumbuh karat-karat yang...
Halaman Konten sendiri—seperti namanya—merupakan halaman yang memuat konten berita utuh. Bentuk kasarnya kira-kira begini:
Sebuah Pesawat Jatuh Di Kasur
Telah dilaporkan bahwa sebuah pesawat yang mengangkut nyamuk yang sedang terbang melintasi
kamar terjatuh ke kasur karena diceblek oleh penebah ketika yang punya kamar sedang bersih-bersih seprei.
Alhasil, kerusakan paling parah tampak pada bagian tengah pesawat yang tersobek tercabik-cabik sehingga pesawat langsung
nyungsep jatuh ke kasur.
Belum ada perkiraan kerugian terhadap peristiwa ini, namun dipastikan bahwa tidak ada korban jiwa yang jatuh.
Seekor Kodok Tewas Mengenaskan
Waru, 9 Februari 2020, seekor kodok ditemukan tewas mengenaskan setelah tertimpa puing-puing
reruntuhan mesin cuci rusak. Tampaknya mesin cuci tersebut sudah sekian lama tak dipakai
sehingga tumbuh karat-karat yang merusak bodi mesin cuci.
Saat dikonfirmasi, pemilik mesin cuci membenarkan bahwa atas kelalaiannya, mesin cuci tersebut
menjadi rusak dan memakan korban. Keluarga tuan kodok hingga saat ini masih menangis histeris melihat
kematian kodok tersebut, dan berencana untuk menggugat pemilik mesin cuci ke pengadilan di mana tuan kambing
akan menjadi hakim perkara ini.
Script ini sangat bergantung pada regex. Pola ini
digunakan untuk menentukan daftar link pada halaman index, judul pada halaman konten, serta isi artikel pada halaman konten. Penentuan
pola yang dipakai dilakukan menggunakan fungsi $obj->setRegex() yang menerima dua parameter yaitu "jenis" dan
"regex yang dipakai". Parameter jenis itu sendiri dapat berisi 3 macam yaitu: index,
judul, atau berita.
Contoh penggunaanya begini:
- require_once( "class-WebContentParser.php" );
- $parser = new WebContentParser( "http://wp.entah.com" );
- $parser->setRegex( "index", "@<h1><a href=\"(.+?)\" rel=\"bookmark\">.*?</h1>@" );
- $parser->setRegex( "judul", "@<h1><a href=\".+?\" rel=\"bookmark\">(.+?)</a></h1>@" );
- $parser->setRegex( "berita", "@</p>.*?</div>[\s]*?<p>(.*?)<!--@ms" );
- if( $parser->parse() ) {
- $res = $parser->getResult();
- } else {
- $parser->dumpError();
- }
Hasil parsing ada di dalam variabel $res, yang selanjutnya terserah anda mau diapakan. Parameter constructor lain dan kegunaan masing-masing parameter tersebut bisa dibaca langsung di source code. Kalau bingung silakan melakukan coba-coba trial n error, atau boleh juga kirim email ke saya, kali aja kita bisa diskusi sedikit tentang parser ini.
Mohon sabar, karena kode ini sudah pasti ndak bagus deh. Sejak pertama kali saya mrogram pada tahun 2000an, ini adalah class kedua
yang telah buat. Ya, baru yang kedua. Saya tidak begitu suka mrogram, apalagi berurusan dengan bebauan OOP. Oleh sebab itu, sebenarnya saya benar-benar mengharapkan bantuan
para programmer yang lain untuk membantu "membereskan" kode ngawur ini. Saya bukan programmer. Walau level saya ecek-ecek,
saya lebih menikmati peran saya sebagai tukang jaringan :)
Download: di sini.
Menurut anda program ini kurang X? Y? Z? Anda bebas ngubah programnya sendiri kok. Kalau mau diskusi, ya ayo via email saja. Kenapa kok di halaman ini ndak bisa pasang komentar ini itu dan anu-anu? Saya males bikin. Kalo mau kontak, (lagi-lagi) ya email saja he..he..he..
- Colongan Berita (rss feed)
- Debian Admin
- Detikcom
- Distro Watch
- OS News
- SlashDot Linux
- Viva News
- Para Tetangga
- Akhmad Suaidi
- Anton Yulianto
- Arinet
- Asfihani
- Budi Wijaya
- Cahyo Darujati
- Dani Wafaul Falah
- David Suhendrik
- Eszy Filiani Poespo
- Galih Satriaji
- Henning TC
- Impianti WU
- KLAS
- Kiki Ahmadi
- M. Yuqi
- Menik
- Nanin Wailisahalong
- Noor Al Azam
- Nur Aini
- Paejo
- Sari Rachmatika
- Satpam Bobo