Data ScienceWeb Scraping

Web Scraping, Ekspresi Reguler, dan Visualisasi Data

Melakukannya Semua dalam Python Sebuah Proyek Kecil di Dunia Nyata untuk Memahami Tiga Keterampilan Penting dalam Ilmu Data.

Sama seperti kebanyakan proyek menarik, proyek ini bermula dari pertanyaan sederhana yang diajukan setengah bercanda: berapa biaya kuliah yang harus saya bayar untuk mendapatkan lima menit waktu dari presiden perguruan tinggi saya? Setelah percakapan yang menyenangkan dengan presiden sekolah saya (CWRU), saya jadi penasaran seberapa besar biaya yang harus saya keluarkan untuk percakapan tersebut.

Pencarian saya mengarah pada artikel ini, yang bersama dengan gaji presiden saya, memiliki tabel yang menampilkan gaji presiden perguruan tinggi swasta di Ohio:

Sementara saya bisa saja menemukan jawaban untuk presiden saya (PERINGATAN SPOILER, itu adalah $48 / lima menit), dan merasa puas, saya ingin mengembangkan ide ini lebih jauh dengan menggunakan tabel ini. Saya telah mencari kesempatan untuk berlatih web scraping dan ekspresi reguler dalam Python dan memutuskan bahwa ini adalah proyek pendek yang bagus.

Meskipun mungkin lebih cepat jika saya secara manual memasukkan data ke Excel, tetapi saya tidak akan mendapatkan kesempatan berharga untuk berlatih beberapa keterampilan! Ilmu data melibatkan pemecahan masalah menggunakan beragam alat, dan web scraping serta ekspresi reguler adalah dua area yang perlu saya tingkatkan (tanpa menyebutkan bahwa membuat plot selalu menyenangkan). Hasilnya adalah proyek yang sangat singkat — tetapi lengkap — yang menunjukkan bagaimana kita bisa menggabungkan tiga teknik ini untuk memecahkan masalah ilmu data.

Kode lengkap untuk proyek ini tersedia sebagai Jupyter Notebook di Google Colaboratory (ini adalah layanan baru yang saya coba di mana Anda dapat berbagi dan berkolaborasi pada Jupyter Notebook di cloud. Rasanya seperti masa depan!) Untuk mengedit notebook, buka di Colaboratory, pilih file > simpan salinan di drive dan Anda dapat melakukan perubahan dan menjalankan Notebook.

Web Scraping

Sementara sebagian besar data yang digunakan dalam kelas dan buku teks muncul dalam format yang siap digunakan dan bersih, pada kenyataannya, dunia tidak selalu begitu mudah. Mendapatkan data biasanya berarti kita harus berurusan dengan hal yang lebih rumit, dalam hal ini adalah mengambil (juga dikenal sebagai scraping) data dari web. Python memiliki alat hebat untuk melakukan ini, yaitu perpustakaan requests untuk mengambil konten dari halaman web, dan bs4 (BeautifulSoup) untuk mengekstraksi informasi yang relevan.

Kedua perpustakaan ini sering digunakan bersama dalam cara berikut: pertama, kita membuat permintaan GET ke sebuah situs web. Kemudian, kita membuat objek Beautiful Soup dari konten yang dikembalikan dan mengurai kontennya menggunakan beberapa metode.

# requests for fetching html of website
import requests# Make the GET request to a url
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')# Extract the content
c = r.contentfrom bs4 import BeautifulSoup# Create a soup object
soup = BeautifulSoup(c)

Objek Beautiful Soup yang dihasilkan terlihat cukup mengintimidasi:

Data kita ada di dalamnya, tetapi kita perlu mengekstraksinya. Untuk memilih tabel kita dari objek soup, kita perlu menemukan pemilih CSS yang tepat. Salah satu cara untuk melakukannya adalah dengan pergi ke halaman web dan memeriksa elemennya. Dalam kasus ini, kita juga bisa melihat ke dalam objek soup dan melihat bahwa tabel kita terletak di bawah tag HTML <div> dengan atribut class = “entry-content”. Dengan menggunakan informasi ini dan metode .find dari objek soup kita, kita dapat mengambil konten artikel utama.

# Find the element on the webpage
main_content = soup.find('div', attrs = {'class': 'entry-content'})

Ini mengembalikan objek soup lain yang belum cukup spesifik. Untuk memilih tabel, kita perlu menemukan tag (lihat gambar di atas). Kita juga ingin mengatasi hanya teks dalam tabel, jadi kita menggunakan atribut .text dari objek soup.

# Extract the relevant information as text
content = main_content.find('ul').text

Sekarang kita memiliki teks tabel yang tepat dalam bentuk string, tetapi jelas belum banyak berguna bagi kita! Untuk mengekstrak bagian-bagian spesifik dari string teks, kita perlu beralih ke ekspresi reguler. Saya tidak memiliki cukup ruang dalam artikel ini (dan juga tidak memiliki pengalaman!) untuk menjelaskan sepenuhnya tentang ekspresi reguler, jadi di sini saya hanya memberikan gambaran singkat dan menunjukkan hasilnya. Saya sendiri masih belajar, dan saya telah menemukan bahwa satu-satunya cara untuk menjadi lebih baik adalah dengan berlatih. Silakan lihat notebook ini untuk latihan lebih lanjut, dan cek dokumentasi Python re untuk memulai (dokumentasi biasanya kering namun sangat membantu).

Regular Expression

Selanjutnya KLIK DISINI

2 thoughts on “Web Scraping, Ekspresi Reguler, dan Visualisasi Data

Leave a Reply

Your email address will not be published. Required fields are marked *