Dalam tutorial ini Anda akan mempelajari apa Pengikisan web adalah dan bagaimana Anda dapat melakukannya dengan PHP. Kami mengekstrak 250 film IMDB berperingkat teratas menggunakan PHP. Di akhir artikel ini, Anda akan memiliki pengetahuan tentang cara melakukan web scraping dengan PHP dan memahami keterbatasan pengumpulan data skala besar dan apa pilihan Anda jika Anda memiliki kebutuhan tersebut.
Daftar Isi
Apa itu pengikisan web?
Kami menjelajahi Internet setiap hari untuk mencari informasi yang kami perlukan untuk menyelesaikan suatu pekerjaan atau sekadar untuk mengkonfirmasi asumsi tertentu. Terkadang Anda mungkin perlu menyalin beberapa data atau konten ini dari situs web dan menyimpannya ke folder untuk digunakan nanti. Jika Anda sudah melakukannya, selamat, Anda pada dasarnya telah melakukan web scraping. Selamat bergabung!
Namun, ketika Anda membutuhkan data dalam jumlah besar, metode salin dan tempel yang umum terbukti membosankan. Data sebagai komoditas hanya masuk akal jika Anda mengekstraknya dalam konteks berskala besar.
Pengikisan web atau ekstraksi data adalah proses pengumpulan data dari berbagai sumber di web dan menyimpannya dalam format yang dapat dibaca.
Data sudah menjadi sebuah mata uang saat ini, dan perusahaan semakin berupaya untuk menjadi berbasis data.
Namun tanpa kerangka kerja yang tepat dan protokol pengelolaan data yang mencakup seluruh siklus hidup data, mata uang abad ke-21 ini akan menjadi seperti kupon yang sudah kadaluarsa. Kami selalu menegaskan bahwa data yang buruk tidak lebih baik daripada tidak ada data. Baca selengkapnya tentang lima karakteristik utama data berkualitas tinggi di sini:
Tujuan utama artikel ini adalah untuk memperkenalkan Anda pada dunia ekstraksi data menggunakan PHP, salah satu bahasa skrip sisi server paling populer untuk situs web.
Kami akan menggunakan skrip PHP sederhana untuk mengekstrak 250 film teratas dari IMDB dan menyajikannya dalam file CSV yang dapat dibaca. Karena PHP adalah salah satu bahasa pemrograman yang paling ditakuti, Anda harus melihatnya lebih dekat. Tingkat kesulitan web scraping dengan PHP hanya bergantung pada perspektif.
Dasar-dasar PHP untuk web scraping
Teknologi yang menciptakan koneksi antara browser web Anda dan banyak situs web di Internet sangatlah rumit dan rumit.
Sekitar 40 % web didasarkan pada PHP, yang selalu dianggap berantakan karena alasan logis dan sintaksis.
PHP adalah bahasa pemrograman berorientasi objek. Ini mendukung semua fitur penting dari pemrograman berorientasi objek seperti abstraksi dan pewarisan, yang paling cocok untuk tujuan scraping jangka panjang.
Meskipun ekstraksi data relatif lebih mudah dengan bahasa pemrograman lain, sebagian besar situs web saat ini memiliki lebih dari sekadar petunjuk tentang PHP, sehingga memudahkan untuk menulis crawler dan mengintegrasikannya ke dalam situs web dengan lebih cepat.
Sebelum melanjutkan, mari kita uraikan secara singkat isi artikel ini:
- persyaratan
- Definisi
- Mempersiapkan
- Membuat pengikis
- Membuat CSV
- kata-kata terakhir
Pertama kita perlu mendefinisikan apa yang kita lakukan dan apa yang akan kita gunakan untuk tutorial scraping ini. Alur kerja umum kami terdiri dari menyiapkan direktori proyek dan menginstal alat yang diperlukan untuk ekstraksi data.
Kebanyakan dari mereka tidak bergantung pada platform dan dapat berjalan di sistem operasi apa pun pilihan Anda.
Kami kemudian akan membahas setiap langkah penulisan scraper di PHP menggunakan perpustakaan yang disebutkan dan menjelaskan fungsi setiap baris.
Terakhir, kita akan membahas batasan crawling dan apa yang harus dilakukan saat melakukan crawling dalam skala besar.
Artikel tersebut membahas kesalahan yang mungkin Anda lakukan tanpa disadari. Kami juga akan menyarankan Anda solusi yang lebih sesuai.
Definisi untuk membantu Anda memulai web scraping PHP
Sebelum kita membahas lebih dalam, mari kita bahas beberapa istilah dasar yang akan Anda temui saat membaca artikel ini. Untuk menyederhanakan demonstrasi, semua istilah teknis didefinisikan di sini.
1. Manajer paket
Manajer paket membantu Anda menginstal paket penting dari toko distribusi pusat. Ini pada dasarnya adalah repositori perangkat lunak yang menyediakan format standar untuk mengelola dependensi perangkat lunak dan perpustakaan PHP.
Meskipun tidak terbatas pada mengelola pustaka PHP, pengelola paket juga dapat mengelola semua perangkat lunak yang diinstal di komputer kita seperti toko aplikasi, tetapi lebih khusus lagi pada kodenya.
Beberapa contoh pengelola paket adalah: Composer (untuk PHP), npm (untuk JavaScript), apt (untuk turunan Ubuntu Linux), Brew (untuk MacOS), Winget (untuk Windows), dll.
2. Konsol Pengembang
Ini adalah bagian dari browser web yang berisi berbagai alat untuk pengembang web. Ini juga merupakan salah satu area browser yang paling sering digunakan ketika kita ingin mulai mengambil data dari situs web.
Konsol ini memungkinkan Anda menentukan tugas apa yang dilakukan browser web saat berinteraksi dengan situs web yang diamatinya. Meskipun ada banyak bagian yang bisa dipilih, pada artikel ini kita hanya akan menggunakan bagian Item, Jaringan, dan Aplikasi.
3. tag HTML
Tag adalah instruksi khusus dalam teks biasa yang diapit tanda kurung segitiga (lebih besar dari/kurang dari karakter).
Contoh:
<html> … </html>
Mereka digunakan untuk memberikan instruksi kepada browser web tentang cara menampilkan halaman web dengan cara yang ramah pengguna.
4. Model Objek Dokumen (DOM)
DOM terdiri dari struktur logis dokumen dan cara mereka diakses dan dimanipulasi.
Sederhananya, DOM adalah model yang dihasilkan dari respon HTML dan dapat direferensikan dengan query sederhana tanpa memerlukan pemrosesan yang rumit.
Contoh yang bagus adalah buku interaktif di mana setiap kata kompleks dihubungkan dengan maknanya saat Anda mengklik kata tersebut.
5. membuang waktu/membuang waktuhttp
Ini adalah paket eksternal yang digunakan oleh scraper kami untuk mengirim permintaan ke dan dari server web, mirip dengan browser web. Mekanisme ini sering disebut jabat tangan HTTP, di mana kode kita mengirimkan permintaan (disebut permintaan GET) ke server IMDB.
Sebagai respons, server mengirimkan kepada kami isi respons, yang terdiri dari serangkaian instruksi dengan isi respons yang benar, cookie (terkadang) dan perintah lain yang dijalankan di browser web.
Karena kode kami berjalan dalam bentuk berurutan (proses demi proses), kami tidak memproses instruksi lain yang disediakan oleh server IMDB. Kita hanya fokus pada teks jawaban. Dokumentasi untuk paket ini dapat ditemukan di sini.
6. Paket/php-html-parser
Seperti guzzle, ini juga merupakan paket eksternal yang digunakan untuk mengubah respons mentah halaman web yang diterima dari klien guzzle menjadi DOM yang tepat.
Dengan mengonversi ke DOM, kita dapat dengan mudah mereferensikan bagian dokumen yang diterima dan mengakses setiap bagian dokumen yang ingin kita cari. Kode sumber dan dokumentasi untuk paket ini dapat ditemukan di sini.
7. URL Dasar
URL Dasar adalah URL situs web yang mengarah ke direktori root server web.
Anda dapat lebih memahami URL dasar dengan melihat cara kerja struktur folder di sistem komputer.
Ambil folder bernama "Dokumen" di komputer. Inilah yang dipaparkan server web ke Internet. Itu dapat diakses oleh setiap pengguna yang meminta tanggapan dari situs web.
Kita dapat membuka folder baru apa pun di folder Dokumen. Menavigasi ke folder baru hanyalah masalah menelusurinya Documents/newfolder/path.
Mirip dengan bagaimana halaman web dikelola berdasarkan hierarki, URL dasar adalah akar dari seluruh dokumen web halaman web, dan semua halaman baru hanyalah "folder" di dalam folder URL dasar tersebut.
Header adalah instruksi untuk server web dan bukan untuk sistem klien kami. Mereka menyediakan kumpulan sederhana definisi yang telah ditentukan sebelumnya yang memungkinkan server web memecahkan kode tanggapan klien secara akurat.
Contoh sederhananya adalah halaman download Windows, misalnya di Microsoft.com.
Berdasarkan header Agen Pengguna, server web dapat dengan mudah menyimpulkan bahwa permintaan yang dikirim ke servernya berasal dari PC Windows. Oleh karena itu, perlu mengirimkan informasi yang relevan dengan platform. Logika yang sama berlaku untuk perbedaan bahasa antar situs web.
9. Pemilih CSS
Pemilih CSS hanyalah kumpulan sintaksis teks yang dapat menemukan lokasi dokumen di DOM tanpa menghabiskan sumber daya pemrosesan yang besar.
Mirip dengan bagian daftar isi pada buku fisik. Dengan melihat daftar isi, pembaca bisa sampai ke bagian yang mereka minati.
Namun tidak seperti TOC, pemilih CSS dapat menerima lebih banyak filter dan menggunakannya untuk mengurangi noise (data tidak penting) dari data aktual yang perlu kita cari di DOM.
Mereka sebagian besar digunakan dalam desain web tetapi sangat membantu dalam web scraping.
Mulai saat ini, artikel ini mengasumsikan bahwa Anda memiliki pengetahuan dasar tentang pemrograman berorientasi objek dan PHP. Anda seharusnya membaca sekilas definisi yang disajikan pada bagian di atas.
Ini akan memberi Anda pengetahuan dasar yang Anda perlukan untuk melanjutkan tutorial di bagian berikut. Sekarang kita akan melihat cara membuat crawler.
komposer
Pertama kita menginstal manajer paket (1) disebut Komposer melalui manajer paket untuk sistem Anda. Untuk varian Linux caranya mudah Sudo apt Instal Komposer (Ubuntu) atau dengan manajer paket apa pun di komputer kita. Informasi lebih lanjut tentang langkah-langkah menginstal Composer dapat ditemukan di sini.
Visual Studio Code (atau editor teks apa pun; bahkan Notepad pun bisa)
Ini untuk menulis scraper yang sebenarnya. Visual Studio Code memiliki beberapa ekstensi untuk membantu Anda mengembangkan program dalam berbagai bahasa pemrograman.
Namun, ini bukan satu-satunya cara untuk mengikuti tutorial ini. Editor teks apa pun, bahkan yang sederhana sekalipun, dapat digunakan untuk menulis scraper.
Kami sangat merekomendasikan IDE karena penyorotan sintaksis otomatis dan fitur dasar lainnya. Itu dapat diinstal melalui toko platform individual.
Di Linux, instalasi melalui manajer paket atau Snap atau Flatpaks jauh lebih mudah. Informasi tentang instalasi Windows dan MacOS dapat ditemukan di sini.
Sekarang kita memiliki semua yang kita perlukan untuk menulis scraper untuk mengekstrak rincian dari 250 film berperingkat teratas di IMDB, kita dapat melanjutkan ke penulisan skrip sebenarnya.
Membuat pengikis web
Dengan menggunakan tautan ini, kami ingin menelusuri 250 film berperingkat teratas di IMDB sejauh ini untuk rincian berikut:
- pangkat
- judul
- Direktur
- Memimpin
- URL
- URL gambar
- Evaluasi
- Jumlah Ulasan
- Tahun penerbitan
Tapi ada sedikit kendala. Situs web tidak menampilkan semua informasi yang kami perlukan.
Hanya pangkat, gelar, tahun, rating dan gambar yang terlihat langsung.
Langkah pertama dalam web scraping adalah mencari tahu apa yang disembunyikan situs web tersebut dari kita.
Anda dapat menganggap situs web sebagai dinding teks yang dikirim dari server web. Saat dibaca oleh web browser, website mungkin menampilkan struktur yang berbeda-beda tergantung instruksi pada dinding teks yang dikirimkan oleh web server.
Setiap hover pada setiap elemen situs web hanyalah sebuah instruksi kepada browser web untuk mengikuti dan bertindak berdasarkan respons teks yang diterima dari server.
Sebagai pengikis, tugas kita adalah memanipulasi teks yang diterima ini dan mengekstrak semua informasi yang ingin disembunyikan situs web dari kita kecuali kita mengeklik opsi yang diinginkan.
Langkah 1:
Buka alat pengembang (2) di browser untuk memeriksa apa yang disembunyikan situs web dari kami. Untuk membuka konsol pengembang, tekan F12 pada keyboard atau Ctrl+Shift+I (Command+Shift+I for Mac)
. Setelah Anda membuka konsol pengembang, Anda akan disambut dengan layar berikut.
Ini pada dasarnya adalah apa yang dikirimkan situs web saat ini ke sistem kami untuk menampilkan situs web di kanvas browser web.
Langkah 2:
Sekarang klik tombol “Periksa” (tombol panah kiri atas) untuk memulai mode pemeriksaan situs web.
Mode ini adalah mode pengembang yang digunakan untuk berinteraksi dengan halaman web seolah-olah kita mencoba menelusuri elemen interaktif di situs web ke sumber instruksi sebenarnya di dinding teks (disebut respons) yang dikirim oleh server web IMDB menjadi .
Sekarang kita cukup mengklik salah satu nama film dan di konsol kita dapat melihat respon teks sebenarnya.