logo proxyscrape gelap

Web Scraping Untuk Pemula: Dasar-dasar & Kerangka Kerja Menggunakan Python

Python, Mengikis, Mar-01-20215 menit baca

Web scraping adalah seni mengekstrak data dari situs web dalam bentuk yang otomatis dan terstruktur dengan baik. Ada beberapa format yang berbeda untuk mengikis data seperti excel, CSV, dan masih banyak lagi. Beberapa kasus penggunaan praktis dari web scraping adalah riset pasar, pemantauan harga, intelijen harga, riset pasar, dan perolehan prospek. Web scraping adalah teknik instrumental untuk memanfaatkan data yang tersedia secara publik dan membuat keputusan yang lebih cerdas. Jadi, sangat bagus bagi semua orang untuk mengetahui setidaknya dasar-dasar web scraping untuk mendapatkan manfaat darinya.

Artikel ini akan membahas dasar-dasar web scraping dengan bermain-main dengan framework Python yang disebut Beautiful Soup. Kita akan menggunakan Google Colab sebagai lingkungan pengkodean.

Langkah-langkah yang Terlibat dalam Web Scraping menggunakan Python

  1. Pertama-tama, kita perlu mengidentifikasi halaman web yang ingin kita scrape dan mengirim permintaan HTTP ke URL tersebut. Sebagai tanggapan, server akan mengembalikan konten HTML dari halaman web tersebut. Untuk tugas ini, kita akan menggunakan pustaka HTTP pihak ketiga untuk menangani permintaan python.
  2. Setelah kita berhasil mengakses konten HTML, tugas utama kita adalah menguraikan data. Kita tidak dapat memproses data hanya melalui pemrosesan string karena sebagian besar data HTML bersarang. Di situlah parser berperan, membuat struktur pohon bersarang dari data HTML. Salah satu pustaka parser HTML yang paling canggih adalah html5lib.
  3. Berikutnya adalah penjelajahan pohon, yang melibatkan navigasi dan pencarian pohon parse. Untuk tujuan ini, kita akan menggunakan Beautiful Soup (pustaka python pihak ketiga). Pustaka Python ini digunakan untuk menarik data dari file HTML dan XML.

Sekarang kita telah melihat bagaimana proses web scraping bekerja. Mari kita mulai dengan pengkodean,

Langkah 1: Menginstal Perpustakaan Pihak Ketiga

Pada kebanyakan kasus, Colab dilengkapi dengan paket pihak ketiga yang sudah terinstal. Namun tetap saja, jika laporan impor Anda tidak berfungsi, Anda dapat menyelesaikan masalah ini dengan menginstal beberapa paket dengan perintah berikut, 

permintaan instalasi pip
pip install html5lib
pip install bs4
Langkah 2: Mengakses Konten HTML dari Halaman Web
permintaan impor 
URL = "http://www.values.com/inspirational-quotes"
r = requests.get(URL) 
print(r.content)

Ini akan menampilkan output formulir,

Mari kita coba memahami potongan kode ini,

  1. Pada baris pertama kode, kita mengimpor pustaka permintaan.
  2. Kemudian kita menentukan URL halaman web yang ingin kita scrape.
  3. Pada baris ketiga kode, kita mengirimkan permintaan HTTP ke URL yang ditentukan dan menyimpan respons server dalam sebuah objek bernama r.
  4. Terakhir, print(r.content) mengembalikan konten HTML mentah dari halaman web.
Langkah3: Mengurai Konten HTML
permintaan impor 
from bs4 import BeautifulSoup 
  
URL = "http://www.values.com/inspirational-quotes"
r = requests.get(URL) 
  
soup = BeautifulSoup(r.content, 'html5lib') # Jika baris ini menyebabkan kesalahan, jalankan 'pip install html5lib' atau instal html5lib 
print(sup.prettify())
Keluaran:

Ini memberikan hasil yang sangat panjang; sebagian tangkapan layar dilampirkan di bawah ini.

Salah satu hal terhebat dari Beautiful Soup adalah bahwa ia dibangun di atas pustaka pengurai HTML seperti html5lib, html.parse, lxml, dan lain-lain yang memungkinkan objek Beautiful Soap dan menentukan pustaka pengurai dibuat secara bersamaan. 

Pada kode di atas, kita telah membuat objek Beautiful Soup dengan memberikan dua argumen:

r. konten: Konten HTML mentah.
html5lib: Menentukan pengurai HTML yang ingin kita gunakan.

Terakhir, soup.prettify() dicetak, memberikan representasi visual pohon parsing dari konten HTML mentah.

Langkah4: Mencari dan menavigasi pohon parsing

Sekarang saatnya untuk mengekstrak beberapa data yang berguna dari konten HTML. Objek sup berisi data dalam bentuk struktur bersarang, yang dapat diekstrak lebih lanjut secara terprogram. Dalam kasus kita, kita akan mengikis halaman web yang terdiri dari beberapa kutipan. Jadi kita akan membuat program yang memecahkan kutipan-kutipan ini. Kode programnya diberikan di bawah ini,

#Python program to scrape website  
#and save quotes from website 
import requests 
from bs4 import BeautifulSoup 
import csv 
   
URL = "http://www.values.com/inspirational-quotes"
r = requests.get(URL) 
   
soup = BeautifulSoup(r.content, 'html5lib') 
   
quotes=[]  # a list to store quotes 
   
table = soup.find('div', attrs = {'id':'all_quotes'})  
   
for row in table.findAll('div', attrs = {'class':'col-6 col-lg-3 text-center margin-30px-bottom sm-margin-30px-top'}): 
    quote = {} 
    quote['theme'] = row.h5.text 
    quote['url'] = row.a['href'] 
    quote['img'] = row.img['src'] 
    quote['lines'] = row.img['alt'].split(" #")[0] 
    quote['author'] = row.img['alt'].split(" #")[1] 
    quotes.append(quote) 
   
filename = 'inspirational_quotes.csv'
with open(filename, 'w', newline='') as f: 
    w = csv.DictWriter(f,['theme','url','img','lines','author']) 
    w.writeheader() 
    for quote in quotes:
        w.writerow(quote)

Sebelum melangkah lebih jauh, disarankan untuk melihat konten HTML dari halaman web, yang telah dicetak menggunakan metode soup.prettify() dan mencoba menemukan pola untuk menavigasi ke tanda kutip.

Sekarang saya akan menjelaskan bagaimana kita menyelesaikannya dalam kode di atas, 

Jika kita menavigasi melalui kutipan, kita akan menemukan bahwa semua kutipan berada di dalam wadah div dengan id 'all_quotes'. Jadi kita menemukan elemen div tersebut (disebut sebagai tabel dalam kode) dengan menggunakan metode find():

table = soup.find('div', attrs = {'id':'all_quotes'})

Argumen pertama dalam fungsi ini adalah tag HTML yang perlu dicari. Argumen kedua adalah elemen tipe kamus untuk menentukan atribut tambahan yang terkait dengan tag tersebut. metode find() mengembalikan elemen pertama yang cocok. Anda bisa mencoba table.prettify() untuk mendapatkan pemahaman yang lebih baik mengenai apa yang dilakukan oleh potongan kode ini.

Jika kita fokus pada elemen tabel, wadah div berisi setiap kutipan yang kelasnya adalah kutipan. Jadi kita akan mengulang setiap kontainer div yang memiliki kelas quote.

Di sini metode findAll() sangat berguna yang mirip dengan metode find() dalam hal argumen, tetapi perbedaan utamanya adalah metode ini mengembalikan daftar semua elemen yang cocok. 

Kita melakukan iterasi pada setiap kutipan dengan menggunakan variabel yang disebut baris.

Mari kita menganalisis satu contoh konten baris HTML untuk pemahaman yang lebih baik:

Sekarang perhatikan potongan kode berikut ini:

for row in table.findAll('div', attrs = {'class':'col-6 col-lg-3 text-center margin-30px-bottom sm-margin-30px-top'}): 
    quote = {} 
    quote['theme'] = row.h5.text 
    quote['url'] = row.a['href'] 
    quote['img'] = row.img['src'] 
    quote['lines'] = row.img['alt'].split(" #")[0] 
    quote['author'] = row.img['alt'].split(" #")[1] 
    quotes.append(quote) 
   
filename = 'inspirational_quotes.csv'
with open(filename, 'w', newline='') as f: 
    w = csv.DictWriter(f,['theme','url','img','lines','author']) 
    w.writeheader() 
    for quote in quotes:
        w.writerow(quote)
Di sini kita membuat sebuah kamus untuk menyimpan semua informasi tentang sebuah kutipan. Notasi titik digunakan untuk mengakses struktur bersarang. Untuk mengakses teks di dalam elemen HTML, kita menggunakan .text:

Lebih jauh lagi, kita juga dapat menambah, menghapus, memodifikasi, dan mengakses atribut tag. Kita telah melakukan ini dengan memperlakukan tag sebagai kamus:

quote['url'] = row.a['href']
Kemudian kita telah menambahkan semua kutipan ke daftar yang disebut kutipan

Terakhir, kita akan menghasilkan file CSV, yang akan digunakan untuk menyimpan data kita.

namafile = 'inspirational_quotes.csv'

Kami telah menamai file kami inspirational_qoutes.csv dan menyimpan semua kutipan di dalamnya untuk digunakan di masa mendatang. Berikut adalah tampilan file inspirational_quotes.csv kita,

Pada output di atas, kami hanya menunjukkan tiga baris, tetapi kenyataannya ada 33 baris. Jadi, ini berarti kita telah mengekstrak sejumlah besar data dari halaman web hanya dengan mencoba secara sederhana. 

Catatan: Dalam beberapa kasus, web scraping dianggap ilegal, yang dapat menyebabkan pemblokiran alamat IP Anda secara permanen oleh situs web. Jadi, Anda harus berhati-hati dan hanya mengikis situs web dan halaman web yang mengizinkannya. 

Mengapa Menggunakan Web Scraping?

Beberapa skenario dunia nyata di mana web scraping dapat digunakan secara besar-besaran adalah,

Generasi Pemimpin
Salah satu aktivitas penjualan yang sangat penting bagi sebagian besar bisnis adalah perolehan prospek. Menurut laporan Hubspot, menghasilkan trafik dan prospek merupakan prioritas nomor satu dari 61% pemasar inbound. Web scraping dapat memainkan peran di dalamnya dengan memungkinkan pemasar untuk mengakses daftar prospek terstruktur di seluruh internet.
Riset Pasar 

Melakukan riset pasar yang tepat adalah elemen terpenting dalam setiap bisnis yang sedang berjalan, dan oleh karena itu membutuhkan informasi yang sangat akurat. Analisis pasar didorong oleh volume tinggi, kualitas tinggi, dan penggalian web yang sangat berwawasan, yang bisa dalam berbagai ukuran dan bentuk. Data ini dapat menjadi alat yang sangat berguna untuk melakukan intelijen bisnis. Fokus utama dari riset pasar adalah pada aspek-aspek bisnis berikut ini:

  • Dapat digunakan untuk menganalisis tren pasar.
  • Hal ini dapat membantu kami memprediksi harga pasar.
  • Hal ini memungkinkan pengoptimalan titik masuk sesuai dengan kebutuhan pelanggan.
  • Hal ini bisa sangat membantu dalam memantau para pesaing.
Buat Daftar

Scraping web dapat menjadi teknik yang sangat berguna dan bermanfaat untuk membuat daftar sesuai dengan jenis bisnis, misalnya, real estat dan toko eCommerce. Alat web scraping dapat membantu bisnis menelusuri ribuan daftar produk pesaing di toko mereka dan mengumpulkan semua informasi yang diperlukan seperti harga, detail produk, varian, dan ulasan. Hal ini dapat dilakukan hanya dalam beberapa jam, yang selanjutnya dapat membantu membuat daftar sendiri, sehingga lebih fokus pada permintaan pelanggan.

Bandingkan Informasi

Web scraping membantu berbagai bisnis mengumpulkan dan membandingkan informasi serta menyediakan data tersebut dengan cara yang bermakna. Mari kita pertimbangkan situs web perbandingan harga yang mengekstrak ulasan, fitur, dan semua detail penting dari berbagai situs web lain. Rincian ini dapat dikompilasi dan disesuaikan agar mudah diakses. Jadi, sebuah daftar dapat dibuat dari berbagai pengecer ketika pembeli mencari produk tertentu. Oleh karena itu, web scraping akan membuat proses pengambilan keputusan menjadi lebih mudah bagi konsumen dengan menampilkan berbagai analisis produk sesuai dengan permintaan konsumen.

Informasi Agregat

Scraping web dapat membantu mengumpulkan informasi dan menampilkannya dalam bentuk yang terorganisir kepada pengguna. Mari kita pertimbangkan kasus agregator berita. Pengikisan web akan digunakan dengan cara berikut,

  1. Dengan menggunakan web scraping, seseorang dapat mengumpulkan artikel yang paling akurat dan relevan.
  2. Ini dapat membantu dalam mengumpulkan tautan untuk video dan artikel yang bermanfaat.
  3. Buat garis waktu sesuai dengan berita.
  4. Menangkap tren menurut pembaca berita.

Jadi dalam artikel ini, kami memiliki analisis mendalam tentang cara kerja web scraping dengan mempertimbangkan kasus penggunaan praktis. Kami juga telah melakukan latihan yang sangat sederhana untuk membuat scraper web sederhana di Python. Sekarang Anda dapat mengikis situs web lain yang Anda pilih. Selain itu, kita juga telah melihat beberapa skenario dunia nyata di mana web scraping dapat memainkan peran penting. Kami harap Anda menikmati artikel ini dan semuanya jelas, menarik, dan mudah dimengerti.  

Jika Anda mencari layanan proxy yang luar biasa untuk proyek penggalian web Anda, jangan lupa untuk melihat ProxyScrapeproksi residensial dan premium.