Pengikisan web menggunakan Python

Pengikisan web menggunakan Python

Web scraping adalah cara otomatis untuk mengekstrak dan memproses informasi dari situs web internet dalam jumlah yang sangat besar. Data di situs web internet tidak terstruktur, yang dapat dikumpulkan dan disusun melalui pengikisan web. Mesin pencari seperti Google, Bing, Yahoo memiliki bot yang mengambil data dari situs internet dan mengindeksnya di halaman pencarian mereka. Data juga dapat diekstraksi menggunakan API, yang mungkin merupakan salah satu cara terbaik untuk mengekstrak data dari web. Situs web terkenal seperti Facebook, Google, Amazon menyediakan user dengan API yang terstruktur dengan baik untuk berinteraksi dengan data, tetapi Anda tidak akan melihat API ini di mana-mana.

 			 		 		 		 		 	

Misalnya, jika Anda ingin mendapatkan pembaruan rutin pada produk favorit Anda untuk penawaran diskon atau Anda ingin mengotomatiskan proses pengdownloadan episode musim favorit Anda satu per satu, dan situs web tidak memiliki API untuk itu, maka satu-satunya pilihan yang tersisa adalah pengikisan web. Pengikisan web mungkin ilegal di beberapa situs web, tergantung pada apakah situs web mengizinkannya atau tidak. Situs web menggunakan file “robots.txt” untuk secara eksplisit menentukan URL yang tidak boleh dihapus. Anda dapat memeriksa apakah situs web mengizinkannya atau tidak dengan menambahkan “robots.txt” dengan nama domain situs web. Misalnya, https://www.google.com/robots.txt

Pada artikel ini, kita akan menggunakan Python untuk scraping karena sangat mudah untuk setup dan useran. Ini memiliki banyak perpustakaan built-in dan pihak ketiga yang dapat digunakan untuk menggores dan mengatur data. Kami akan menggunakan dua pustaka Python “urllib” untuk mengambil halaman web dan “BeautifulSoup” untuk mengurai halaman web untuk menerapkan operasi pemrograman.

Bagaimana Pengikisan Web bekerja?

Kami mengirim permintaan ke halaman web, dari mana Anda ingin mengikis data. Website akan merespon permintaan dengan konten HTML halaman. Kemudian, kita dapat mengurai halaman web ini ke BeautifulSoup untuk diproses lebih lanjut. Untuk mengambil halaman web, kita akan menggunakan library “urllib” dengan Python.

Urllib akan mengdownload konten halaman web dalam HTML. Kami tidak dapat menerapkan operasi string ke halaman web HTML ini untuk ekstraksi konten dan pemrosesan lebih lanjut. Kami akan menggunakan pustaka Python “BeautifulSoup” yang akan mengurai konten dan mengekstrak data yang menarik.

Menggores artikel dari Linuxhint.com

Sekarang setelah kita memiliki gagasan tentang cara kerja pengikisan web, mari kita lakukan beberapa latihan. Kami akan mencoba mengikis judul artikel dan link dari Linuxhint.com. Jadi buka https://linuxhint.com/ di browser Anda.

 

Sekarang tekan CRTL+U untuk melihat kode sumber HTML halaman web.

Copy kode sumber, dan buka https://htmlformatter.com/ untuk mempercantik kode. Setelah mempercantik kode, mudah untuk memeriksa kode dan menemukan informasi menarik.

Sekarang, copy lagi kode yang telah diformat dan tempel di editor teks favorit Anda seperti atom, sublime text, dll. Sekarang kita akan mengikis informasi menarik menggunakan Python. Ketik berikut ini

// Ins
tall beautiful soup library, urllib comes
pre-installed in Python
ubuntu@ubuntu:~$ sudo pip3 install bs4

ubuntu@ubuntu:~$ python3
Python 3.7.3 (default, Oct  7 2019, 12:56:13)
[GCC 8.3.0] on linux

Ketik “bantuan”, “hak cipta”, “kredit” atau “lisensi” untuk informasi lebih lanjut.

//Import urllib
>>> import urllib.request

//Import BeautifulSoup
>>> from bs4 import BeautifulSoup

//Enter the URL you want to fetch
>>> my_url = 'https://linuxhint.com/'
//Request the URL webpage using urlopen command
>>> client = urllib.request.urlopen(my_url)

//Store the HTML web page in “html_page” variable
>>> html_page = client.read()

//Close the URL connection after fetching the webpage
>>> client.close()

//parse the HTML webpage to BeautifulSoup for scraping
>>> page_soup = BeautifulSoup(html_page, "html.parser")

Sekarang mari kita lihat kode sumber HTML yang baru saja kita copy dan tempel untuk menemukan hal-hal yang kita minati.

Anda dapat melihat bahwa artikel pertama yang terdaftar di Linuxhint.com bernama “74 Bash Operators Example”, temukan ini di kode sumber. Itu diapit di antara tag header, dan kodenya adalah

<header class="entry-header">
<span class="meta-category">
<a href="https://linuxhint.com/category/bash-programming/"
class="category-1561">BASH Programming</a></span>
<h2 class="entry-title">
<a href="https://linuxhint.com/bash_operator_examples/"
title="74 Bash Operators Examples">74 Bash Operators
Examples</a></h2>
</header>

Kode yang sama berulang-ulang dengan perubahan hanya judul artikel dan link. Artikel berikutnya memiliki kode HTML berikut:

<header class="entry-header">

<span class="meta-category">
<a href="https://linuxhint.com/category/ubuntu/"
class="category-1343">Ubuntu</a> <span>&bull;
</span> <a href="https://linuxhint.com/category/
varnish/" class="category-2078">Varnish</a></span>

<h2 class="entry-title">
<a href="https://linuxhint.com/varnish_cache_ubuntu_1804/"
title="How to set up Varnish cache on Ubuntu 18.04">
How to set up Varnish cache on Ubuntu 18.04</a></h2>
</header>

Anda dapat melihat bahwa semua artikel termasuk keduanya diapit oleh tag “<h2>” yang sama dan menggunakan kelas “entry-title” yang sama. Kita dapat menggunakan fungsi “findAll” di perpustakaan Beautiful Soup untuk menemukan dan membuat daftar semua “<h2>” yang memiliki kelas “entry-title”. Ketik yang berikut di konsol Python Anda

// This command will find all “<h2>” tag elements having class named
“entry-title”. output will be stored in an array.

>>> articles = page_soup.findAll("h2",
{"class" : "entry-title"})

// number of articles found on front page of Linuxhint.com
>>> len(articles)
102

// First extracted “<h2>” tag element containing article name and link
>>> articles[0]

<h2 class="entry-title">
<a href="https://linuxhint.com/bash_operator_examples/"
title="74 Bash Operators Examples">
74 Bash Operators Examples</a></h2>


// Second extracted “<h2>” tag element containing article name and link
>>> articles[1]
<h2 class="entry-title">
<a href="https://linuxhint.com/varnish_cache_ubuntu_1804/"
 title="How to set up Varnish cache on Ubuntu 18.04">
How to set up Varnish cache on Ubuntu 18.04</a></h2>

// Displaying only text in HTML tags using text function
>>> articles[1].text
'How to set up Varnish cache on Ubuntu 18.04'

Sekarang kita memiliki daftar 102 elemen tag HTML “<h2>” yang berisi tautan artikel dan judul artikel. Kami dapat mengekstrak tautan dan judul artikel. Untuk mengekstrak tautan dari tag “<a>”, kita dapat menggunakan kode berikut

// following code will extract the link from first <h2> tag element 
>>> for link in articles[0].find_all('a', href=True):
...    print(link['href'])
...
https://linuxhint.com/bash_operator_examples/

Sekarang kita dapat menulis perulangan for yang mengulangi setiap elemen tag “<h2>” dalam daftar “artikel” dan mengekstrak tautan dan judul artikel.

>>> for i in range(0,10):
...    print(articles[i].text)
...    for link in articles[i].find_all('a', href=True):
...             print(link['href']+"n")
...
74 Bash Operators Examples
https://linuxhint.com/bash_operator_examples/

How to set up Varnish cache on Ubuntu 18.04
https://linuxhint.com/varnish_cache_ubuntu_1804/

PineTime: A Linux Friendly Smartwatch
https://linuxhint.com/pinetime_linux_smartwatch/

10 Best Cheap Linux Laptops to Buy on a Budget
https://linuxhint.com/best_cheap_linux_laptops/

HD Remastered Games for Linux that Never had a Linux Release...
https://linuxhint.com/hd_remastered_games_linux/

60 FPS Screen Recording Apps for Linux
https://linuxhint.com/60_fps_screen_recording_apps_linux/

74 Bash Operators Examples
https://linuxhint.com/bash_operator_examples/

...snip...

Demikian pula, Anda menyimpan hasil ini ke file JSON atau CSV.

Kesimpulan

Tugas harian Anda tidak hanya manajemen file atau eksekusi perintah sistem. Anda juga dapat mengotomatiskan tugas terkait web seperti otomatisasi pengdownloadan file atau ekstraksi data dengan menggores web dengan Python. Artikel ini terbatas hanya pada ekstraksi data sederhana tetapi Anda dapat melakukan otomatisasi tugas besar menggunakan “urllib” dan “BeautifulSoup”.

Related Posts