Pengantar Lembut tentang Ekstraksi Data Web | Mengikis Dengan 🐍

Data ada dimana-mana. Data ada di web. Tapi apa itu web? Dan bagaimana cara mengekstrak data darinya?

Postingan ini adalah yang pertama dari seri “Scraping with Python 🐍 ”di mana saya bermaksud menjelaskan dan mengajarkan konsep scraping dasar hingga tingkat lanjut.

Perkenalan

Anda ingin mengumpulkan data dari web tetapi tidak tahu harus mulai dari mana? Anda mengikuti startprojecttutorial Scrapy tetapi laba-laba Anda masih tidak merayapi web? Anda bahkan belum pernah mendengar kata crawling ? Hebat, rangkaian artikel ini cocok untuk Anda: Anda akan menemukan dunia scraping yang menakjubkan!

  • Hari ini, di Bagian 1, kita akan menemukan prinsip dasar scraping ke web.
  • Bagian 2 akan menjadi penjelasan tentang cara mengekstrak data secara terprogram dari satu halaman web.
  • Bagian 3 akan menjadi pengenalan tentang Scrapy dan cara menjalankan proyek dalam kerangka Python yang luar biasa ini.
  • Bagian 4 akan menjadi kasus penggunaan di situs web kehidupan nyata. Semacam zero to hero untuk mengambil data produk dari salah satu platform terbesar di dunia.

Bagaimana cara kerja webnya?

Mari kembali ke dasar, dengan beberapa definisi dasar dari Wikipedia:

  • Internet (yang merupakan singkatan dari Interconnected Network ) adalah sistem global jaringan komputer yang saling terhubung yang menggunakan rangkaian protokol Internet (TCP/IP) untuk berkomunikasi antara jaringan dan perangkat.
  • World Wide Web (www), umumnya dikenal sebagai Web, adalah sistem informasi tempat dokumen dan sumber daya web lainnya diidentifikasi berdasarkan URL (Uniform Resource Locators) dan dapat diakses melalui Internet.
  • browser web adalah aplikasi perangkat lunak untuk mengakses data di World Wide Web. Saat pengguna meminta halaman web dari situs web tertentu, browser web mengambil konten yang diperlukan dari server web dan kemudian menampilkan halaman tersebut di perangkat pengguna.

Lalu apa yang terjadi ketika Anda ingin melihat halaman web? Katakanlah Anda ingin membaca artikel ini. Anda menyalakan komputer Anda. Anda membuka Chrome, Firefox, Safari, atau browser web apa pun. Anda menulis URL laman dalam kotak teks di bagian atas browser favorit Anda. Anda menekan enter. Dan kemudian keajaiban terjadi. Browser Anda menghubungi komputer pertama yang mengetahui di mana ia dapat menemukan situs web medium.com. Mesin pertama ini mengubah nama domain medium.com menjadi alamat IP dan mengembalikan alamat IP ini ke browser Anda (ini disebut resolusi DNS) . Sekarang browser Anda menghubungi server medium berkat alamat IP-nya melalui Protokol Internet. Dan ia menanyakan halaman webartikel yang Anda cari. Server menghostingsitus web dan dapat menghasilkan laman web yang Anda inginkan. Kemudian ia mengirimkan file HTMLkembali ke browser Anda. Browser Anda menafsirkanfile yang diterimanya dan menampilkan halaman web. Sekarang Anda dapat menikmati konten yang ingin Anda baca 😃

Seperti disebutkan, server mengirimkan halaman HTML ke browser Anda.Tapi apa itu HTML?

  • Itu singkatan dari HyperText Markup Language.
  • Ini adalah bahasa yang digunakan untuk membuat dan mewakili konten halaman web dan strukturnya. Teknologi lain digunakan dengan HTML untuk mendeskripsikan presentasi halaman (CSS) dan/atau fitur interaktifnya (JavaScript).
  • Ia bekerja melalui "tag" yang disisipkan dalam teks normal. Masing-masing tag ini menunjukkan arti dari bagian teks tertentu di situs.

Seperti yang Anda duga, ini adalah hal yang krusial untuk dipahami dan disadari scraping. Kita akan segera mendapatkan pemahaman yang lebih mendalam tentang apa itu HTML, bagaimana strukturnya, dan bagaimana menggunakannya untuk ekstraksi data 😉

Scraping Web, apa maksudnya?

Definisi

Ini mungkin tampak jelas bagi sebagian dari Anda, tetapi dalam pengenalan tentang web scraping, definisi istilah tersebut mungkin dapat diterima. Jadi, seperti yang ingin saya sebutkan:

“Web Scraping adalah seni mengumpulkan data dari web”

Dan ya, saya menganggapnya seni 🎨! Memang sepertinya algoritma lain. Namun kenyataannya setiap halaman web berbeda, setiap halaman web dibuat dengan teknologi berbeda, setiap situs web mungkin memiliki strategi anti-scrapingnya sendiri; dan yang ingin Anda lakukan sebagai ahli scraper adalah merekayasa balik semua upaya yang dilakukan untuk mengubah data mentah menjadi halaman web yang indah dan mengembalikannya sebagai data mentah 😈! Dan untuk melakukannya, Anda harus inovatif dan menerapkan metodologi yang berbeda untuk setiap situs web baru.

Yang mana, bagi Anda yang lebih ragu, sesuai dengan definisi seni :

“Seni adalah ekspresi atau penerapan keterampilan kreatif dan imajinasi manusia”

Kadang-kadang, setelah menghabiskan waktu berjam-jam atau berhari-hari untuk mempersiapkan scraping, ketika Anda akhirnya menjalankannya, dan melihat semua data disimpan ke dalam database Anda, hal itu benar-benar tampak seperti keajaiban.

Namun mari kita kembali ke pendekatan pragmatis dan mempertahankan filosofinya untuk nanti.

Pengumpulan data — cara untuk melanjutkan

Jadi inilah kita, berbicara tentang pengumpulan data. Biasanya, ada tiga cara untuk mendapatkan data :

  • Dari database, menggunakan SQL atau bahasa permintaan lainnya. Namun meskipun hal ini dapat dilakukan melalui layanan cloud seperti Amazon S3 atau SQL Azure, hal tersebut tidak sesuai dengan definisi bagian kedua yaitu “Dari web”
  • Menggunakan API,yang merupakan Aantarmuka Ppemrograman I aplikasi dan merupakan layanan yang diberikan per beberapa situs web untuk dengan mudah menyediakan beberapa data mereka.
  • Menggunakan Scraping, yang berarti menganalisis halaman mentah yang dikirim dari server internet dan mengekstrak data dari kontennya.

Mari temukan lebih lanjut tentang dua cara terakhir mengumpulkan data.

Ikhtisar singkat tentang API

API tersedia persis seperti halaman web. Artinya Anda memasukkan URL di browser Anda dan alih-alih mendapatkan halaman web HTML klasik, Anda mendapatkan data terstruktur seperti kamus. Ada beberapa hal yang perlu diingat terkait API:

  • Dibutuhkan sangat sedikit baris kode untuk mengakses data
  • Ini mengembalikan keluaran terstruktur; yang mudah diubah menjadi database

NB: Saya menghapus beberapa lelucon yang diterima di file json (intinya untuk masalah ukuran) tetapi memang terkait dengan kode sebelumnya, ada 10 lelucon di output.

  • Ini adalah layanan yang disediakan oleh sebuah website tetapi hanya berdasarkan niat baik dari pemilik website tersebut. Tidak ada seorang pun yang wajib menyediakan layanan seperti itu, dan tentu saja tidak semua situs web memilikinya.

Secara umum, situs web yang menyediakan API juga menyediakan dokumentasi ringkas untuk menjelaskan data yang dapat mereka tawarkan. Ini menjelaskan semua cara Anda dapat menghubungi server untuk mengumpulkan data, seperti apa tampilan data ini, bagaimana strukturnya.

Situs web yang menyediakan API memiliki kendali penuh atas proses dan data yang dikirimkannya. Mereka tahu persis berapa banyak panggilan yang mereka terima dari setiap mesin yang meminta data. Terkadang Anda mungkin perlu mengautentikasi untuk menggunakan API; untuk melakukannya, Anda sering kali harus mendaftar di situs web sebagai pengembang dan meminta token. Nanti saat memanggil URL, Anda harus mengirimkan token rahasia Anda di parameter (lihat contoh di bawah). Hal ini memungkinkan pengontrolan jumlah persis data yang Anda minta dan mungkin menyebabkan pembatasan (Misalnya: maks 100 permintaan API/hari) atau paket berbayar (Misalnya: 1000 permintaan gratis dan kemudian 50 sen untuk setiap 20 permintaan).

Tipikal website yang memiliki API adalah website yang menyiratkan banyak data. Diantaranya, Anda akan menemukan jejaring sosial (Facebook, Instagram, Twitter,…), situs web keuangan (Bloomberg, Yahoo Finance, Binance,…), atau situs web cuaca (OpenWeatherMap, AccuWeather,…).

Langkah-langkah pengikisan web

Ketika datang ke web scraping yang sebenarnya, idenya adalah mengumpulkan halaman HTML yang dikirim dari server dan menganalisisnya apa adanya, tanpa menggunakan browser untuk merendernya. Maka sebagai proses yang efisien, scrapingadalah gabungan dari dua tindakan:

  • Parsing: ini adalah fakta untuk mengekstrak data (teks, link, gambar,…) dari halaman web dengan menganalisis konten HTML-nya.
  • Perayapan: ini adalah fakta untuk bernavigasi antar laman dengan mengikuti tautan satu demi satu.

Misalnya, jika Anda ingin mendapatkan informasi tentang produk Amazon tentang komputer, Anda akan mencari “komputer” di bilah penelitian utama. Kemudian Anda ingin scraper Anda menemukan semua link item di halaman pertama hasil. Kemudian :

  • Ikuti semua tautan item (perayapan)
  • Analisis konten halaman setiap item dan ekstrak informasi seperti judul, harga, penjual, … (parsing)
  • Temukan tautan halaman item berikutnya (parsing)
  • Ikuti tautan halaman berikutnya (perayapan) untuk mengulangi prosesnya dan akhirnya mendapatkan semua informasi tentang semua produk yang ada terkait dengan komputer.

Keuntungan utama: dengan memanfaatkan sarana tersebut, situs web apa pun “dapat dihapus”. Dengan teknik tersebut, setiap data di web dapat disimpan dalam database.

Kekurangan utama: prosesnya jauh lebih berat, dan mungkin memerlukan waktu sangat lama untuk meretas situs web tertentu.

Pada dasarnya inilah yang akan dibicarakan dalam artikel-artikel selanjutnya dalam seri ini. Sekarang mari kita beralih ke alat python untuk web scraping.

Alat Python untuk mengumpulkan data dari web

Salah satu keuntungan terbesar Python adalah jumlah paket sumber terbuka yang tersedia (sekitar 113 ribu per pip, pada 2019). Berikut adalah pilihan dari beberapa yang paling terkenal yang dapat digunakan dalam konteks scraping.

  • Pandasebenarnya bukan paket pengikisan (manipulasi data), namun mereka merilis fungsi pd.read_html() yang secara otomatis mengekstrak HTMLtabletag dan mengubahnya menjadi pd.DataFrame. Ini sangat efisien dan dalam beberapa kasus dasar, ini mungkin sangat berguna. Khususnya untuk mengumpulkan tabel data dari Wikipedia.
  • Permintaan adalah pustaka HTTP yang elegan dan sederhana untuk Python, dibuat untuk manusia. Yang sangat berguna untuk mengunduh halaman web, dan juga untuk permintaan API.
  • Beautiful Soup adalah pustaka Python untuk mengambil data dari file HTML dan XML. Ini memberikan cara idiomatis untuk menavigasi, mencari, dan memodifikasi pohon HTML. Ini adalah parser python historis.
  • Seleniumadalah paket yang dirancang untuk otomatisasi pengujian web. Ini membuka browser dan kemudian diprogram untuk mensimulasikan perilaku manusia (klik, masukkan teks, gulir…). Meskipun tidak boleh digunakan untuk mengikis, terkadang hal ini tampaknya sangat membantu.
  • Scrapyadalah kerangka kerja untuk mengekstraksi data yang Anda perlukan dari situs web. Dengan cara yang cepat, sederhana, namun dapat diperluas. Ia menggunakan permintaan asinkron, yang membuatnya sangat cepat saat melakukan crawling, dan memiliki parser bawaan yang kuat. Ia menyadari permintaan HTTP dan mem-parsing respons HTML sebelum dirender.

Masing-masing memiliki kelebihan dan kekurangannya, dan tidak digunakan dalam konteks yang sama, namun saat ini favorit saya adalah Scrapy karena kesederhanaan dan kekuatannya 😃

Kesimpulan

Hari ini kami mendapatkan pendekatan pertama terhadap web scraping; pertama, kami mengklarifikasi cara kerja web, lalu kami melihat berbagai cara mengumpulkan data dari web, beserta kelebihan dan kekurangannya. Terakhir, kami memiliki ikhtisar berbagai alat yang dapat Anda gunakan untuk mengikis data. Semoga semuanya jelas bagi Anda 😉

Lain kali kita akan mempelajari lebih lanjut, menemukan XPath dan Pemilih CSS, yang merupakan metode ampuh untuk mulai menguraikan konten Html.

Semoga Anda menyukainya & Sampai jumpa lagi 🤠