logo proxyscrape gelap

Web Scraping, Ekspresi Reguler, Dan Visualisasi Data, Melakukan Semuanya Dalam Python

Python, Mengikis, Nov-02-20225 menit baca

Web scraping can be defined as the method of collecting and restructuring data from websites. It can also be defined as the programmatic approach of obtaining website data in an automated manner. For instance, you want to extract the email IDs of all people who commented on a Facebook post. You can do this by

Daftar Isi

Web scraping dapat didefinisikan sebagai metode pengumpulan dan restrukturisasi data dari situs web. Hal ini juga dapat didefinisikan sebagai pendekatan terprogram untuk mendapatkan data situs web secara otomatis. Misalnya, Anda ingin mengekstrak ID email semua orang yang berkomentar di postingan Facebook. Anda dapat melakukan ini dengan dua metode. Pertama, Anda bisa mengarahkan kursor ke string alamat email seseorang. Anda kemudian dapat menyalin dan menempelkannya ke dalam sebuah file. Metode ini dikenal sebagai pengikisan manual. Tapi bagaimana jika Anda ingin mengumpulkan 2000 ID email? Dengan bantuan alat scraping web, Anda dapat mengekstrak semua ID email dalam 30 detik, bukan 3 jam jika Anda menggunakan scraping manual.

Anda dapat menggunakan alat pengikis web untuk mengekstrak informasi dari situs web. Anda hanya perlu mengetahui cara mengeklik, dan tidak diperlukan pengetahuan pemrograman. Alat-alat ini hemat sumber daya dan menghemat waktu dan biaya. Anda dapat mengikis jutaan halaman berdasarkan kebutuhan Anda tanpa mengkhawatirkan bandwidth jaringan. Beberapa situs web menerapkan anti-bot yang mencegah scraper mengumpulkan data. Tetapi alat scraping web yang baik memiliki fitur bawaan untuk melewati alat ini dan memberikan pengalaman scraping yang mulus.

Scraping Web di Python

Python memiliki alat yang sangat baik untuk mengikis data dari web. Sebagai contoh, Anda bisa mengimpor pustaka request untuk mengambil konten dari halaman web dan bs4(BeautifulSoup) untuk mengekstrak informasi yang relevan. Anda dapat mengikuti langkah-langkah di bawah ini untuk melakukan web scrape di Python. Kita akan mengekstrak informasi dari situs web ini

Permintaan impor:

Anda harus mengimpor pustaka permintaan untuk mengambil HTML situs web. 

permintaan impor

Dapatkan permintaan:

Anda harus membuat permintaan GET ke situs web. Anda dapat melakukan ini dengan menempelkan URL ke dalam fungsi requests.get().

r = requests.get('http://www.cleveland.com/metro/index.ssf/2017/12/case_western_reserve_university_president_barbara_snyders_base_salary_and_bonus_pay_tops_among_private_colleges_in_ohio.html')

Ekstrak Konten:

Ekstrak konten situs web menggunakan r.content. Ini memberikan konten situs web dalam bentuk byte. 

c = r.content

Impor BeautifulSoup:

Anda harus mengimpor pustaka BeautifulSoup karena ini memudahkan untuk mengorek informasi dari halaman web.

from bs4 import BeautifulSoup

Membuat objek sup:

Anda harus membuat objek BeautifulSoup dari konten dan menguraikannya menggunakan beberapa metode.

sup = BeautifulSoup(c)
print(sup.get_text())

Anda akan mendapatkan output (ini hanya sebagian) seperti ini.

Mengekstrak Data yang Berguna:

Kita harus menemukan penyeleksi CSS yang tepat karena kita perlu mengekstrak data yang kita inginkan. Kita dapat menemukan konten utama pada halaman web dengan menggunakan metode .find() pada objek sup.

main_content = soup.find('div', attrs = {'class': 'entry-content'})

Gunakan atribut .text:

Kita dapat mengambil informasi sebagai teks dari tabel dengan menggunakan atribut.text pada sup.

konten = konten_utama.find('ul').text
print(konten)

Kami mengambil teks tabel sebagai sebuah string. Namun informasi tersebut akan sangat berguna jika kita mengekstrak bagian tertentu dari string teks. Untuk mencapai tugas ini, kita perlu beralih ke Regular Expressions.

Ekspresi Reguler Dalam Python

Ekspresi reguler(RegEx) adalah urutan pola yang mendefinisikan pola pencarian. Ide dasarnya adalah itu:

  • Tentukan pola yang ingin Anda cocokkan dalam string teks. 
  • Cari dalam string untuk mengembalikan kecocokan.

Misalkan kita ingin mengekstrak informasi berikut ini dari tabel teks.

  • Gaji
  • Nama-nama perguruan tinggi
  • Nama-nama presiden

Anda dapat mengekstrak ketiga informasi tersebut dengan mengikuti langkah-langkah yang disebutkan di bawah ini.

Langkah 01:

Impor re dan untuk mengekstrak gaji, Anda harus membuat pola gaji. Gunakan metode re.compile() untuk mengkompilasi pola ekspresi reguler yang disediakan sebagai string ke dalam objek pola RegEx. Selanjutnya, Anda dapat menggunakan pattern.findall() untuk menemukan semua kecocokan dan mengembalikannya sebagai daftar string. Setiap string akan mewakili satu kecocokan.

import re
pola_gaji = re.compile(r'\$.+')
gaji = pola_gaji.findall(content)

Langkah 02:

Ulangi prosedur yang sama untuk mengekstrak nama-nama perguruan tinggi. Buatlah pola dan ekstrak nama-nama tersebut. 

school_pattern = re.compile(r'(?:,|,\s)([A-Z]{1}.*?)(?:\s\(|:|,)')
schools = school_pattern.findall(content)
print(schools)
print(salaries)

Langkah 03:

Ulangi prosedur yang sama untuk mengekstrak nama-nama presiden. Buatlah pola dan ekstrak nama-nama yang diperlukan. 

name_pattern = re.compile(r'^([A-Z]{1}.+?)(?:,)', flags = re.M)
names = name_pattern.findall(content)
print(names)

Langkah 04:

Gaji terlihat berantakan dan tidak dapat dimengerti. Jadi, kita menggunakan pemahaman daftar Python untuk mengubah gaji string menjadi angka. Kita akan menggunakan pemotongan string, pemisahan dan penggabungan, dan pemahaman daftar untuk mencapai hasil yang diinginkan.

gaji = ['$876,001', '$543,903', '$2453,896']
[int(''.join(s[1:].split(','))) for s in salaries]

Keluarannya adalah sebagai berikut:

Visualisasi Data Dalam Python

Visualisasi data membantu Anda memahami data secara visual sehingga tren, pola, dan korelasinya dapat terlihat. Anda dapat menerjemahkan data dalam jumlah besar ke dalam grafik, bagan, dan visual lainnya untuk mengidentifikasi pencilan dan mendapatkan wawasan yang berharga.

Kita dapat menggunakan matplotlib untuk memvisualisasikan data, seperti yang ditunjukkan di bawah ini.

Impor pustaka yang diperlukan seperti yang ditunjukkan di bawah ini.

import pandas sebagai pd
import matplotlib.pyplot as plt

Buatlah sebuah dataframe pandas dari sekolah, nama dan gaji. Sebagai contoh, Anda dapat mengubah sekolah-sekolah menjadi sebuah dataframe sebagai:

df_sekolah = pd.DataFrame(schools)
print(df_sekolah)

Keluarannya adalah:

Demikian juga, Anda dapat melakukan hal yang sama untuk gaji dan nama.

Untuk visualisasi data, kita dapat memplot grafik batang seperti yang ditunjukkan di bawah ini.

df.plot(type='barh', x = ' Presiden', y = ' gaji')

Keluarannya adalah sebagai berikut:

Mengapa Proksi Dibutuhkan Untuk Penggalian Web?

Pengikisan web membantu bisnis mengekstrak informasi yang berguna tentang wawasan pasar dan industri untuk menawarkan layanan yang didukung data dan membuat keputusan berdasarkan data. Proksi sangat penting untuk mengikis data dari berbagai situs web karena alasan berikut ini secara efektif.

  • Menghindari Larangan IP - Untuk menghentikan perayap membuat terlalu banyak permintaan, situs web bisnis membatasi jumlah data yang dapat dirayapi yang disebut sebagai Tingkat Perayapan. Crawl Rate memperlambat kecepatan situs web, dan menjadi sulit bagi pengguna untuk mengakses konten yang diinginkan secara efektif. Namun, jika Anda menggunakan kumpulan proxy yang cukup untuk mengikis data, Anda akan melewati batas kecepatan pada situs web target. Itu karena proxy mengirim permintaan dari alamat IP yang berbeda, sehingga memungkinkan Anda untuk mengekstrak data dari situs web sesuai kebutuhan Anda.
  • Mengaktifkan Akses ke Konten Spesifik Wilayah - Bisnis harus memantau pesaing mereka (situs web) untuk menyediakan fitur dan harga produk yang sesuai kepada pelanggan di wilayah geografis tertentu. Mereka dapat mengakses semua konten yang tersedia di wilayah itu dengan menggunakan proxy perumahan dengan alamat IP.
  • Keamanan yang Ditingkatkan - Server proxy menambahkan lapisan keamanan tambahan dengan menyembunyikan alamat IP perangkat pengguna.

Tahukah Anda berapa banyak proxy yang diperlukan untuk mendapatkan manfaat di atas? Anda dapat menghitung jumlah proxy yang diperlukan dengan menggunakan rumus ini:

Jumlah proxy = Jumlah permintaan akses / Tingkat Perayapan

Jumlah permintaan akses tergantung pada parameter berikut.

  • Frekuensi scraper mengekstrak informasi dari situs web
  • Jumlah halaman yang ingin dikikis oleh pengguna

Di sisi lain, tingkat perayapan dibatasi oleh jumlah permintaan yang dibuat pengguna dalam jangka waktu tertentu. Beberapa situs web mengizinkan jumlah permintaan yang terbatas per pengguna untuk membedakan permintaan pengguna otomatis dan manusia. 

Menggunakan Proksi Dalam Python

Anda dapat menggunakan proksi di Python dengan mengikuti langkah-langkah di bawah ini.

  • Anda harus mengimpor modul permintaan Python.
permintaan impor
  • Anda dapat membuat kumpulan proxy untuk memutarnya.
proxy = 'http://114.121.248.251:8080'
url = 'https://ipecho.net/plain'
  • Anda dapat menggunakan requests.get( ) untuk mengirim permintaan GET dengan mengoper proxy sebagai parameter ke URL.
page = requests.get(url,
                    proxies={"http": proxy, "https": proxy})
  • Anda bisa mendapatkan konten URL yang diminta jika tidak ada kesalahan koneksi.
cetak(halaman.text)

Keluarannya adalah sebagai berikut:

Kesimpulan

Kita telah membahas bahwa kita dapat menggunakan web scraping untuk mengekstrak data dari situs web daripada menggunakan scraping manual. Web scraping adalah proses yang hemat biaya dan hemat waktu. Bisnis menggunakannya untuk mengumpulkan dan merestrukturisasi informasi web untuk membuat keputusan berdasarkan data dan mendapatkan wawasan yang berharga. Penggunaan proxy sangat penting untuk web scraping yang aman karena menyembunyikan alamat IP asli pengguna dari situs web target. Anda bisa menggunakan proxy pusat data atau proxy residensial untuk web scraping. Tetapi lebih suka menggunakan proxy perumahan karena cepat dan tidak mudah terdeteksi. Selanjutnya, kita dapat menggunakan ekspresi reguler di Python untuk mencocokkan atau menemukan kumpulan string. Ini berarti kita dapat mengekstrak pola string apa pun dari teks dengan bantuan ekspresi reguler. Kami juga melihat bahwa visualisasi data mengubah data dalam jumlah besar menjadi bagan, grafik, dan visual lainnya yang membantu kami mendeteksi anomali dan mengidentifikasi tren yang berguna dalam data.