Pengikisan web Google Spreadsheet bisa menjadi teknik yang efektif. Meskipun sebagian besar cara pengikisan web mengharuskan Anda menulis kode, pengikisan web dengan Google Spreadsheet tidak memerlukan pengkodean atau add-on. Yang perlu Anda lakukan adalah menggunakan fungsi bawaan Google Sheets. Dengan demikian, ini berfungsi sebagai pengikis web dasar
Panduan ini akan menunjukkan cara mengikis data situs web dengan Google Sheets dengan contoh praktis.
Mengimpor XML dan HTML
IMPORTXML adalah fungsi yang mengimpor data dari berbagai tipe data terstruktur. Anda dapat menggunakannya untuk mengikis data tidak hanya dari dokumen XML tetapi juga dari dokumen HTML. Tipe data terstruktur lainnya yang didukung oleh rumus IMPORTXML adalah Comma Separated Values (CSV), Tab Separated Values (TSV), Really Simple Syndication (RSS), dan feed Atom XML
Bagaimana IMPORTXML bekerja
Fungsi IMPORTXML memerlukan dua parameter—URL halaman yang akan diperiksa dan kueri XPath
Jika Anda ingin melihat dokumentasi resmi, klik di sini. Namun, artikel ini akan menjelaskan IMPORTXML dan beberapa fungsi terkait lainnya secara mendetail. Mari kita lihat beberapa contoh untuk membantu kita memahami fungsi IMPORTXML sedikit lebih baik
Untuk mengekstrak elemen judul dari https. //kutipan. mengikis. com/ halaman web, rumusnya adalah sebagai berikut
=IMPORTXML("//quotes.toscrape.com/","//title")
Seperti yang terlihat di sini, parameter pertama adalah URL situs web, dan parameter kedua adalah kueri XPath. Perhatikan juga bahwa Anda perlu mengapit kedua parameter dalam tanda kutip kecuali jika ini adalah referensi ke sel lain
Anda dapat membuat kueri XPath langsung dari browser. Buka halaman web di browser pilihan Anda, klik kanan elemen yang ingin Anda ekstrak, dan pilih Inspeksi. Anda akan melihat alat pengembang terbuka dengan elemen HTML yang disorot. Klik kanan HTML elemen yang disorot, lalu pilih Salin dan pilih Salin XPath. Tindakan ini menyalin XPath dan menyimpan elemen tersebut ke clipboard Anda
Menyalin XPath elemen
Mari kita lihat satu contoh lagi. Jika Anda ingin mengekstrak kutipan pertama dari halaman web, rumusnya adalah sebagai berikut
=IMPORTXML("//quotes.toscrape.com/","(//*[@class='text']/text())[1]")_
Jika kueri XPath ini tampak seperti sesuatu yang tidak Anda sukai, sebaiknya baca bagian XPath di blog kami untuk mempelajari lebih lanjut tentang menulis kueri XPath.
Atau, Anda dapat memasukkan URL dalam sel. Misalnya, jika Anda memasukkan URL di sel A1 dan XPath di sel A2, rumus Anda akan merujuk ke sel tersebut sebagai berikut
Pengenalan XPath cepat
IMPORTXML hanya berfungsi dengan XPath. Bagian ini memberi Anda ikhtisar singkat tentang XPath, yang cukup untuk mulai menggunakan rumus IMPORTXML.
Jika Anda memiliki HTML di mana tag body berisi h1 secara langsung, Anda dapat menggunakan XPath berikut untuk menemukan elemen h1 ini
Garis miring di awal ekspresi XPath mewakili dokumen. Kita dapat membaca XPath di atas sebagai berikut
Mulailah dengan akar dokumen
Temukan tag html di dokumen
Temukan tag tubuh di tag html
Temukan tag h1
Jika Anda ingin mencocokkan semua tag h1, Anda dapat membuat Xpath ini lebih pendek sebagai berikut
Dua garis miring ke depan berarti mencocokkan semua keturunan. Ekspresi XPath ini akan cocok dengan semua elemen h1 yang ditemukan di manapun dalam dokumen. Selanjutnya, untuk mengekstrak teks yang terdapat pada elemen h1, Anda dapat menggunakan fungsi text()
Dimungkinkan juga untuk mengekstraksi nilai atribut apa pun. Misalnya, jika Anda ingin mengekstrak nilai atribut kelas dari tag h1, XPath akan menjadi sebagai berikut
Seperti yang Anda lihat, untuk bekerja dengan atribut, Anda harus mengawali karakter @
Mari kita lihat pemfilteran. Misalnya, bagaimana jika Anda hanya ingin mendapatkan elemen h1 dengan menerapkan kelas bernama pdp_orange?
Kita belajar dari ungkapan ini bahwa kita perlu menggunakan tanda kurung siku.
Ikuti langkah-langkah di bawah ini untuk mengekstrak data dari situs web ke Google Sheets tanpa menggunakan add-on
1. Pertama, mari temukan XPath untuk memilih elemen. Muat situs di Chrome, Klik kanan elemen, dan pilih Periksa.
Anda akan melihat jendela alat pengembang terbuka dengan panel Elemen. Seperti yang mungkin Anda ketahui, Alat Pengembang sangat penting untuk membuat pengikis web apa pun. Selanjutnya, jika Anda ingin memilih satu elemen saja, klik kanan elemen HTML, pilih Salin, dan klik Salin XPath
Dalam contoh ini, kami akan bekerja dengan https. // buku. mengikis. com/, bertujuan untuk mendapatkan semua judul buku. Persyaratan ini berarti kita perlu menulis XPath khusus yang terlihat seperti ini
Tekan Ctrl+F atau Command+F saat tab Elemen di bilah alat pengembang terbuka dan rekatkan XPath ini. Anda akan melihat pratinjau dari 20 item yang dipilih
Melihat markup HTML, Anda akan melihat bahwa nama buku tidak lengkap untuk banyak buku di dalam teks elemen. Itu sebabnya kami mengekstraksi nilai atribut judul yang berisi judul buku lengkap.
2. Arahkan ke Google Sheets dan buat sheet baru. Langkah ini mengharuskan Anda untuk masuk ke akun Google Anda jika Anda belum melakukannya. Bergantung pada berapa banyak lembar yang telah Anda buat di masa lalu, Anda akan melihat ubin lembar Baru di bagian atas atau tombol Lembar Baru mengambang di sudut kanan bawah
Tip. Lembar terbuka. new untuk langsung membuat sheet baru
3. Masukkan URL halaman web dan XPath dalam dua sel. Memasukkan nilai ini ke dalam sel memungkinkan kita membuat formula yang mudah dipelihara
Memasukkan URL dan XPath
4. Terakhir, kita bisa mulai mengekstrak data website dengan Google Sheets. Di sel baru, misalnya A2, masukkan rumus berikut
Rumus ini secara efektif memanggil fungsi di bawah ini
=IMPORTXML("//books.toscrape.com/","//h3/a/@title")
Tekan ENTER untuk menjalankan fungsi ini. Butuh beberapa saat dan mendapatkan semua dua puluh judul buku
Anda akan melihat bahwa satu rumus mengekstrak semua dua puluh judul buku secara efisien. Untuk mengekstrak harga buku, langkah pertama adalah membuat XPath untuk harga. XPath ini akan menjadi sebagai berikut
Masukkan XPath ini ke dalam sel, katakanlah, B3. Setelah itu, masukkan rumus berikut di sel B4
Anda akan melihat bahwa sekarang Anda telah mengambil harga buku
Selain IMPORTXML, beberapa fungsi lain dapat digunakan untuk mengorek web langsung dari dokumen Google Sheets. Sekali lagi, tidak perlu add-on, karena ini tersedia secara native
Fungsi-fungsi tersebut adalah sebagai berikut
IMPORTHTML
IMPORTFEED
IMPORTDATA
Anda dapat menggunakan fungsi IMPORTHTML untuk mengekstrak data dari tabel dan daftar. Fungsi IMPORTDATA dapat mengikis data saat URL situs target Anda berisi data dalam format CSV atau TSV. Fungsi IMPORTFEED dapat mengimpor umpan RSS atau Atom. Kami akan merinci fungsi-fungsi ini segera
Impor tabel dari situs web ke Google Sheets
Jika halaman target Anda berisi data dalam tabel, fungsi IMPORTHTML sangat cocok untuk Anda. Fungsi ini mengharapkan tiga parameter
URL - Ini adalah URL halaman yang ingin Anda kikis. URL ini harus lengkap, termasuk http. // bagian
Entah "tabel" atau "daftar" - formula IMPORTHTML juga bisa mendapatkan data dari daftar. Jika Anda ingin mengekstrak tabel, setel nilai ini ke "tabel"
INDEX dari tabel atau daftar yang ingin Anda kikis.
Perhatikan hal berikut tentang rumus INDEX
a. INDEX dimulai dari 1
b. INDEX untuk tabel dan daftar terpisah. Oleh karena itu, angka 1 bisa berarti tabel pertama dan daftar pertama sekaligus. Apa yang Anda dapatkan tergantung pada parameter kedua
Sebagai contoh, mari kita lihat https. //en. wikipedia. org/wiki/List_of_film_berpenghasilan tertinggi. Halaman ini berisi daftar dalam sebuah tabel.
Jadi, mulailah dengan membuat lembar baru, dan masukkan URL ini ke dalam sel. Misalnya, kami telah memasukkan URL di sel B1
Selanjutnya, masukkan rumus berikut di sel A3
=IMPORTHTML(B1,"table",1)
Rumus ini mendapatkan tabel pertama dari halaman. Hasilnya, Anda akan melihat seluruh tabel diambil dari halaman web ke dalam spreadsheet Google
Dimungkinkan juga untuk mengekstrak hanya satu kolom. Untuk ini, Anda dapat menggunakan fungsi pengikisan web Google Spreadsheet lainnya—INDEX. Fungsi INDEX dapat mengekstrak baris atau kolom apa pun dari tabel. Ini membutuhkan satu parameter wajib dan dua parameter opsional
Referensi tabel
Baris - Opsional
Kolom - Opsional
Misalnya, jika kita hanya menginginkan judul film yang ada di kolom nomor 3, rumus kita akan menjadi seperti di bawah ini
=INDEX(IMPORTHTML("//en.wikipedia.org/wiki/List_of_highest-grossing_films","table",1),,3)_
Kami telah melewatkan parameter opsional "baris" karena kami ingin menyimpan semua baris. Mari beralih ke fungsi bermanfaat lainnya—IMPORTFEED
Impor data dari umpan XML ke Google Spreadsheet
RSS dan Atom adalah dua format XML standar untuk menghasilkan umpan situs web. Meskipun menggores data dari mereka menggunakan fungsi IMPORTXML dimungkinkan, itu masih memerlukan penulisan kueri XPath. Dengan demikian, fungsi khusus lebih cocok. Ada beberapa add-on pihak ketiga, tetapi kami tidak membutuhkannya.
Di sinilah fungsi IMPORTFEED masuk. Hanya membutuhkan satu baris argumen, yaitu URL umpan. Jika Anda mengirimkan URL feed, fungsi ini akan mengambil data dan menyajikannya kepada Anda di Google Sheets. Mari kita ambil contoh umpan Teknologi New York Times untuk melihat fungsi ini beraksi.
1. Buat lembar baru dan masukkan URL umpan di sel B1
//rss.nytimes.com/services/xml/rss/nyt/Technology.xml
2. Sekarang, di sel A2, masukkan rumus berikut
Mengimpor data dari umpan situs web
3. Tekan Enter, dan Anda akan melihat dua puluh item feed diimpor ke dokumen Google Sheets Anda
Menyesuaikan data yang diimpor oleh IMPORTFEED
Fungsi IMPORTFEED memiliki parameter opsional berikut
Kueri - Anda dapat menggunakan ini untuk menentukan informasi mana yang ingin Anda impor
Header - Seperti yang Anda lihat dari gambar di atas, tidak ada header pada data yang diimpor. Jika Anda ingin melihat tajuk kolom, setel parameter ini ke BENAR
num_items - Anda juga dapat mengontrol berapa banyak item yang diambil. Jika Anda ingin hanya lima item yang diimpor, setel parameter ini ke 5
Mari perbarui pemanggilan fungsi sebagai berikut
Data yang diimpor dengan header
Perhatikan bahwa kami telah meninggalkan ruang kosong untuk kueri. Panggilan fungsi ini membawa semua kolom. Namun, sekarang Anda hanya akan melihat lima item yang diambil bersama dengan header kolom
Jika Anda menginginkan informasi spesifik dari umpan, ada daftar kemungkinan item yang dapat Anda kirim ke parameter kedua, yang sejauh ini belum kami gunakan. Jika Anda hanya menginginkan informasi tentang umpan, masukkan rumus berikut
Rumus ini mengembalikan satu baris dengan informasi umpan. Dalam contoh khusus ini, hasilnya adalah sebagai berikut
NYT > Teknologi https. // www. nytimes. com/section/technology
Anda dapat mempersempit informasi ini lebih lanjut dengan menentukan informasi mana yang Anda inginkan dari informasi umpan. Misalnya, jika Anda hanya memerlukan judul, ubah rumusnya sebagai berikut
=IMPORTFEED(B1,"feed title")_
Opsi lainnya adalah deskripsi umpan, pembuat umpan, dan URL umpan. Anda akan melihat kesalahan jika ada informasi yang tidak ditemukan di feed
Pesan error yang menunjukkan bahwa informasi tidak ditemukan di feed
Jika Anda ingin melihat kolom tertentu, Anda dapat menggunakan kueri sebagai "item". Misalnya, jika Anda hanya ingin mendapatkan judul, masukkan rumus berikut
=IMPORTFEED(B1,"items title")
Perhatikan bahwa Anda tidak dapat menentukan lebih dari satu kolom sedemikian rupa. Jika Anda ingin mendapatkan dua kolom, Anda perlu membuat panggilan fungsi terpisah
Mengimpor Data dari CSV ke Google Sheets
Jika Anda memiliki URL situs web yang berisi file CSV, Anda dapat menggunakan fungsi IMPORTDATA untuk mendapatkan datanya. Misalnya, buat lembar baru dan masukkan URL berikut di sel B1
//www2.census.gov/programs-surveys/decennial/2020/data/apportionment/apportionment.csv_
Di sel A2, masukkan rumus berikut
Mengekstrak data dari file CSV
Apakah data tetap segar?
Jika Anda membiarkan lembar Google Anda tetap terbuka, fungsi ini memeriksa data yang diperbarui setiap jam. Data juga akan disegarkan jika Anda menghapus dan menambahkan sel yang sama. Perhatikan bahwa data tidak akan di-refresh jika Anda me-refresh sheet atau jika Anda menyalin-tempel sel dengan fungsi ini
Keuntungan dan kerugian dari fungsi impor
Ada beberapa keuntungan utama menggunakan fungsi impor di Google Sheets
Keuntungan paling signifikan dari semua fungsi ini adalah Anda tidak perlu belajar membuat kode. Selain itu, Anda tidak memerlukan add-on apa pun untuk membuat pengikis web Google Sheet
Data yang diekstraksi tetap segar secara otomatis.
Anda dapat menggunakan impor yang agak dinamis, karena rumus ini dapat digunakan sebagai rumus Google Sheets biasa, yang berarti ini dapat mereferensikan sel lain.
Kekurangannya juga banyak.
Metode ini tidak dapat diskalakan. Jika Anda ingin mengimpor jutaan catatan, Google Sheets bukanlah yang Anda butuhkan
Tidak ada opsi untuk menyesuaikan tajuk. Header yang dikirim adalah header Google standar, termasuk agen pengguna, yang berarti banyak situs web akan memblokirnya
Selain itu, tidak ada opsi untuk mengirim permintaan POST. Bahkan tugas pengikisan web yang sedikit rumit tidak akan berhasil
Terakhir, Anda tidak memiliki opsi untuk menggunakan proxy. Untuk tingkat lanjut apa pun, Anda harus mengandalkan pemrograman atau solusi profesional seperti Akuisisi Data Web Berskala Besar
Kesalahan Umum
Berikut adalah beberapa kesalahan umum yang mungkin Anda hadapi saat membuat spreadsheet Google untuk web scraping
Kesalahan. Hasil array tidak diperluas
Kesalahan yang paling umum adalah kesalahan #REF. Jika Anda mengarahkan mouse ke kesalahan, Anda akan melihat pesan yang mirip dengan berikut ini
Hasil array tidak diperluas karena akan menimpa data di A36
Kesalahan ini berarti Anda perlu memberi ruang dengan menambahkan lebih banyak sel untuk hasilnya
Kesalahan. Hasil terlalu besar
Jika Anda melihat kesalahan ini, artinya hasilnya terlalu besar untuk ditangani oleh Google Sheets. Kesalahan ini terjadi saat menggunakan fungsi IMPORTXML. Solusinya adalah memperbarui kueri XPath sehingga jumlah data yang dikembalikan lebih kecil
Kesalahan terkait dengan fungsi volatil
Ketika Anda melihat kesalahan berikut
Kesalahan. Fungsi ini tidak diperbolehkan mereferensikan sel dengan NOW(), RAND(), atau RANDBETWEEN()
Artinya, Anda mencoba mereferensikan salah satu fungsi volatil, seperti NOW, RAND, atau RANDBETWEEN, di salah satu parameter. Referensi ini mungkin tidak langsung atau langsung
Fungsi impor tidak dapat menggunakan sebagian besar fungsi volatil. Solusinya adalah menyalin dan menempelkan nilai, lalu mereferensikan nilai tersebut
Kesimpulan
Google Sheets adalah cara yang bagus untuk memulai pengikisan web tanpa menulis kode apa pun. Dengan cara ini, Anda mengumpulkan data dalam spreadsheet yang merupakan keuntungan lain. Namun, cakupannya terbatas, dan Anda perlu menggunakan atau membuat pengikis web untuk pengikisan web tingkat lanjut. Untuk kemudahan penggunaan, Anda juga dapat menemukan panduan ini di GitHub
Jika Anda ingin mempelajari lebih lanjut tentang web scraping menggunakan bahasa pemrograman yang berbeda, lihat postingan blog kami, seperti Web Scraping dengan JavaScript, Web Scraping dengan Java, Web Scraping dengan C#, Tutorial Web Scraping Python, dan banyak lagi
Tentang Penulis Vytenis Kaubre Copywriter Muda Vytenis Kaubre adalah Copywriter Junior di Oxylabs. Karena hasratnya terletak pada penulisan kreatif dan keingintahuan pada teknologi apa pun terus tumbuh, dia bergabung dengan pasukan copywriter. Setelah bekerja, Anda mungkin menemukan Vytenis menonton acara TV, bertukar pikiran tentang ide untuk permainan di atas meja, atau menerima saran Raymond Chandler, "Jika ragu, suruh seorang pria masuk melalui pintu dengan pistol di tangannya" terlalu serius (saat menulis cerita pendek) Semua informasi di Oxylabs Blog disediakan "sebagaimana adanya" dan hanya untuk tujuan informasi. Kami tidak mewakili dan melepaskan semua tanggung jawab sehubungan dengan penggunaan Anda atas informasi apa pun yang terdapat di Blog Oxylabs atau situs web pihak ketiga mana pun yang mungkin ditautkan di dalamnya. Sebelum terlibat dalam aktivitas scraping dalam bentuk apa pun, Anda harus berkonsultasi dengan penasihat hukum Anda dan membaca persyaratan layanan situs web tertentu dengan saksama atau menerima lisensi scrapingBagaimana cara mendapatkan data dari lembar Google ke situs web?
Bisakah saya menggunakan Google Sheets sebagai database untuk situs web?
Bagaimana cara mengekstrak data dari Google Sheets?
Bagaimana cara mendapatkan data dari Google Sheets ke tabel HTML?