Kursus Bimbingan Skripsi/Tesis/Disertasi Python: Belajar Web Scraping Tweeter Menggunakan Python
Belajar Web Scraping Tweeter Menggunakan Python dibahas dari dasar sampai bisa diterapkan sendiri di Bimbingan Skripsi/Tesis/Disertasi Python — mengubah data mentah jadi insight yang bisa dipakai ambil keputusan. Live Zoom, cocok buat analis data, mahasiswa riset, dan tim bisnis. Kursus Bimbingan Skripsi/Tesis/Disertasi ini tersedia juga sebagai training Bimbingan Skripsi/Tesis/Disertasi maupun pelatihan Bimbingan Skripsi/Tesis/Disertasi in-house untuk kebutuhan perusahaan.
Silabus
•Sesi 1 (1.5 jam): Pengenalan Bimbingan Skripsi/Tesis/Disertasi Python: sejarah, kegunaan, dan ruang lingkup industri
•Sesi 3 (1.5 jam): Mengenal antarmuka (interface) dan navigasi dasar
•Sesi 4 (1.5 jam): Pengaturan preferensi & workspace yang efisien
•Sesi 5 (1.5 jam): Tools & menu utama: fungsi dan penggunaan dasar
•Sesi 6 (1.5 jam): Latihan dasar: membuat project pertama
•Sesi 7 (1.5 jam): Import & export file dasar di Bimbingan Skripsi/Tesis/Disertasi Python
•Sesi 8 (1.5 jam): Teknik dasar penyimpanan & manajemen file project
•Sesi 9 (1.5 jam): Studi kasus sederhana: aplikasi Bimbingan Skripsi/Tesis/Disertasi Python di dunia kerja
•Sesi 10 (1.5 jam): Review materi dasar & quiz pemahaman
Daftar Kursus Ini
Baik, mari kita mulai dengan dasar-dasar web scraping Twitter menggunakan Python. Web scraping adalah proses otomatis untuk mengambil data dari situs web. Untuk Twitter, kita biasanya menggunakan API mereka, tapi untuk tujuan pembelajaran, kita akan membahas dasar-dasar scraping langsung dari situs web menggunakan alat-alat seperti BeautifulSoup dan Selenium.
Langkah-langkah Web Scraping Twitter dengan Python
Memahami Tujuan dan Keterbatasan: Twitter memiliki kebijakan API yang ketat. Menggunakan web scraping langsung dari situs bisa melanggar aturan mereka, jadi selalu pertimbangkan menggunakan Twitter API jika memungkinkan.
Web scraping bisa dibatasi oleh CAPTCHA dan perubahan layout situs.
Menyiapkan Lingkungan: Python: Versi terbaru
Pustaka yang diperlukan: requests , BeautifulSoup , dan Selenium
Instal pustaka-pustaka ini dengan pip: pip install requests beautifulsoup4 selenium
Menggunakan BeautifulSoup untuk Mengambil Data Statis: requests digunakan untuk mengambil halaman HTML.
BeautifulSoup digunakan untuk memparsing HTML dan mengekstrak data.
Menggunakan Selenium untuk Data Dinamis: Selenium digunakan untuk mengotomatisasi browser, yang berguna untuk situs yang memuat data secara dinamis dengan JavaScript.
Contoh Web Scraping Menggunakan BeautifulSoup
Mari kita mulai dengan contoh sederhana menggunakan requests dan BeautifulSoup untuk mengambil tweet dari halaman tertentu.
Untuk situs yang memuat konten dengan JavaScript, kita perlu menggunakan Selenium. Selenium mengontrol browser dan bisa digunakan untuk mengambil data setelah halaman dimuat sepenuhnya.
Pertanyaan yang Sering Diajukan
Apakah kursus Bimbingan Skripsi/Tesis/Disertasi Python ini cocok untuk pemula?▾
Materi disusun bertahap mulai dari konsep dasar, sehingga peserta tanpa pengalaman sebelumnya tetap bisa mengikuti dengan pendampingan instruktur.
Bagaimana metode belajarnya?▾
Kelas online live via Zoom dengan instruktur berpengalaman, praktik langsung, serta rekaman sesi yang bisa diputar ulang. Tersedia juga opsi in-house training untuk perusahaan.
Apakah ada project akhir yang bisa dijadikan portofolio?▾
Ya, setiap peserta menyelesaikan mini project end-to-end yang bisa langsung dijadikan portofolio atau bahan skripsi/tesis.
Apakah mendapat sertifikat setelah selesai?▾
Ya, peserta yang menyelesaikan program mendapatkan e-certificate resmi dari Cerdas Inovasi Digital.
Bagaimana cara mendaftar?▾
Klik tombol daftar pada halaman kursus ini atau hubungi admin kami untuk konsultasi jadwal dan paket yang sesuai kebutuhan Anda.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
Konfigurasi webdriver
chrome_options = Options()
chrome_options.add_argument("--headless")
service = Service(executable_path='/path/to/chromedriver')
Requests dan BeautifulSoup : Bayangkan Anda membaca koran fisik. Anda hanya perlu membuka halaman dan melihat teks di depan Anda.
Selenium : Seperti membuka koran digital di komputer yang memuat lebih banyak konten saat Anda menggulir halaman. Selenium membantu Anda menggulir dan mengambil data yang muncul.
Kita akan masuk ke langkah-langkah lebih mendalam untuk melakukan web scraping Twitter menggunakan Python.
Langkah 1: Menyiapkan Lingkungan
Sebelum memulai, pastikan Anda memiliki Python dan pustaka yang diperlukan. Berikut cara menginstal pustaka:
pip install requests beautifulsoup4 selenium
Langkah 2: Memahami Struktur Halaman Twitter
Untuk melakukan scraping, kita harus memahami bagaimana data disusun di halaman web. Misalnya, setiap tweet di Twitter memiliki elemen HTML tertentu yang kita bisa targetkan.
Langkah 3: Mengambil Data Statis dengan BeautifulSoup
Kita akan mulai dengan mengambil data statis. Ini cocok untuk halaman web yang tidak banyak berubah atau tidak memuat konten secara dinamis.
requests.get(url) : Mengambil konten dari URL yang diberikan.
BeautifulSoup(response.text, ‘html.parser’) : Memparsing konten HTML yang diambil.
soup.find_all(‘div’, {‘data-testid’: ‘tweet’}) : Menemukan semua elemen tweet berdasarkan atribut ‘data-testid’.
Langkah 4: Mengambil Data Dinamis dengan Selenium
Untuk situs yang memuat data dengan JavaScript, seperti Twitter, kita menggunakan Selenium untuk mengotomatisasi browser dan mengambil konten setelah halaman dimuat sepenuhnya.
Contoh Kode:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
Konfigurasi webdriver
chrome_options = Options()
chrome_options.add_argument("--headless")
service = Service(executable_path='/path/to/chromedriver') # Ganti dengan path ke chromedriver Anda
webdriver.Chrome(service=service, options=chrome_options) : Membuka browser Chrome dengan konfigurasi headless (tanpa tampilan).
driver.get(url) : Mengakses halaman yang ditentukan.
driver.find_elements(By.CSS_SELECTOR, ‘article’) : Menemukan elemen-elemen tweet berdasarkan selektor CSS.
driver.quit() : Menutup browser setelah selesai.
Analoginya:
Requests dan BeautifulSoup : Seperti membuka koran fisik di mana Anda bisa langsung membaca teks yang terlihat.
Selenium : Seperti membuka koran digital di komputer yang memuat lebih banyak konten saat Anda menggulir halaman. Selenium membantu Anda menggulir dan mengambil data yang muncul.
Langkah 5: Mengelola Data yang Diambil
Setelah Anda mengambil data, langkah berikutnya adalah menyimpannya dalam format yang dapat dianalisis lebih lanjut, misalnya dalam file CSV.
Contoh Kode:
import csv
Menyimpan data dalam file CSV
with open('tweets.csv', 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(["Tweet"]) # Menulis header
for tweet in tweets:
writer.writerow([tweet.text])
Penjelasan:
open(‘tweets.csv’, ‘w’, newline=”, encoding=’utf-8′) : Membuka (atau membuat) file CSV untuk menulis.
csv.writer(file) : Membuat penulis CSV.
writer.writerow([“Tweet”]) : Menulis baris header.
writer.writerow([tweet.text]) : Menulis setiap tweet ke dalam file.
Kita akan melanjutkan ke bagian yang lebih teknis mengenai web scraping Twitter menggunakan Python. Kita akan memperdalam penggunaan Selenium untuk mengotomatisasi proses scraping dan menangani data dinamis.
Langkah 6: Mengotomatisasi Proses Scraping dengan Selenium
Selenium adalah alat yang sangat kuat untuk mengotomatisasi interaksi dengan browser. Ini memungkinkan kita untuk mengakses situs web yang memuat konten dinamis dan melakukan tindakan seperti menggulir, mengklik, dan mengisi formulir.
Persiapan Selenium
Download WebDriver : Anda memerlukan WebDriver yang sesuai dengan browser yang Anda gunakan (misalnya, ChromeDriver untuk Google Chrome). Anda dapat mengunduhnya dari situs resmi Selenium atau browser yang bersangkutan.
Konfigurasi Path : Pastikan executable path dari WebDriver sudah dikonfigurasi dengan benar.
Contoh Kode Menggunakan Selenium
Berikut adalah contoh kode yang lebih lengkap untuk mengambil tweet dari halaman profil Twitter menggunakan Selenium:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.action_chains import ActionChains
import time
Konfigurasi webdriver
chrome_options = Options()
chrome_options.add_argument("--headless") # Jalankan browser tanpa GUI
chrome_options.add_argument("--disable-gpu")
service = Service(executable_path='/path/to/chromedriver') # Ganti dengan path ke chromedriver Anda
Menggulir Halaman : SCROLL_PAUSE_TIME : Waktu jeda antara setiap guliran untuk memungkinkan halaman memuat konten baru.
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") : Menggulung halaman hingga ke bawah.
Perulangan untuk menggulir hingga tidak ada konten baru yang dimuat.
Menemukan dan Mengekstrak Tweet : driver.find_elements(By.CSS_SELECTOR, 'article') : Menemukan semua elemen yang mengandung tweet berdasarkan selektor CSS.
tweet.text : Mengambil teks dari setiap tweet yang ditemukan.
Penyimpanan Data
Setelah mendapatkan data, kita perlu menyimpannya untuk analisis lebih lanjut. Berikut adalah cara untuk menyimpan data dalam file CSV menggunakan Python:
Contoh Kode:
import csv
Menyimpan data dalam file CSV
with open('tweets.csv', 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(["Tweet"]) # Menulis header
for tweet in tweets:
writer.writerow([tweet.text])
Penjelasan:
Membuka File CSV : open('tweets.csv', 'w', newline='', encoding='utf-8') : Membuka (atau membuat) file CSV untuk menulis. Menggunakan newline='' untuk menghindari baris kosong ganda.
Menulis Header dan Data : writer.writerow(["Tweet"]) : Menulis baris header untuk kolom tweet.
writer.writerow([tweet.text]) : Menulis setiap tweet ke dalam file CSV.
Contoh Lengkap
Berikut adalah contoh lengkap dari seluruh proses scraping, dari mengakses halaman hingga menyimpan data:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.action_chains import ActionChains
import time
import csv
Konfigurasi webdriver
chrome_options = Options()
chrome_options.add_argument("--headless") # Jalankan browser tanpa GUI
chrome_options.add_argument("--disable-gpu")
service = Service(executable_path='/path/to/chromedriver') # Ganti dengan path ke chromedriver Anda
with open('tweets.csv', 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(["Tweet"]) # Menulis header
for tweet in tweets:
writer.writerow([tweet.text])
Menutup browser
driver.quit()
Menangani Potensi Masalah
CAPTCHA dan Pembatasan : Twitter mungkin meminta CAPTCHA jika mereka mendeteksi aktivitas mencurigakan. Ini bisa menjadi batasan utama untuk web scraping.
Perubahan Struktur Halaman : Struktur HTML Twitter bisa berubah, sehingga selektor CSS yang digunakan perlu diperbarui.
mari kita lanjutkan dengan beberapa aspek lanjutan dari web scraping, serta beberapa praktik terbaik dan penanganan masalah umum yang mungkin Anda hadapi saat melakukan scraping di Twitter atau situs web lainnya.
Langkah 7: Penanganan Potensi Masalah dan Praktik Terbaik
1. Mengatasi CAPTCHA dan Pembatasan
Twitter dan banyak situs web lainnya menggunakan CAPTCHA untuk mencegah scraping otomatis. Ada beberapa cara untuk mengatasi ini, meskipun tidak ada solusi yang sempurna:
Human Intervention : Ketika CAPTCHA muncul, intervensi manual mungkin diperlukan untuk menyelesaikannya.
Rotasi IP : Menggunakan layanan proxy untuk merotasi IP address bisa membantu menghindari pembatasan. Layanan seperti ProxyMesh atau ScraperAPI bisa membantu.
Headless Browsing dengan Randomized Delays : Menggunakan Selenium dengan waktu jeda acak antara tindakan untuk meniru perilaku manusia.
2. Penanganan Perubahan Struktur Halaman
Struktur HTML situs web bisa berubah sewaktu-waktu. Untuk mengatasinya:
Monitor Perubahan : Secara berkala memeriksa halaman untuk memastikan selektor CSS masih valid.
XPath vs. CSS Selectors : XPath lebih fleksibel dalam beberapa kasus dan bisa digunakan sebagai alternatif selektor CSS.
3. Rate Limiting
Banyak situs menerapkan rate limiting untuk membatasi jumlah permintaan dalam periode tertentu. Praktik terbaik:
Mengatur Batas Permintaan : Mengatur kecepatan scraping untuk menghindari batasan ini.
Menangani Respon 429 (Too Many Requests) : Menambahkan mekanisme penanganan untuk mencoba ulang permintaan setelah jeda waktu.
4. Etika Scraping
Baca dan Patuhi TOS (Terms of Service) : Pastikan Anda memahami dan mematuhi kebijakan situs web.
Gunakan API Resmi Jika Tersedia : Twitter memiliki API resmi yang dirancang untuk digunakan pengembang, yang lebih stabil dan mendukung penggunaan yang lebih luas.
Penanganan Masalah Umum
1. Error 403 (Forbidden) atau 404 (Not Found)
Penyebab : URL yang salah atau akses yang dibatasi.
Solusi : Periksa URL yang Anda coba akses, pastikan benar dan bisa diakses secara publik.
2. Timeouts
Penyebab : Situs yang lambat atau koneksi jaringan yang buruk.
Solusi : Mengatur waktu tunggu yang lebih lama dalam permintaan HTTP atau Selenium.
3. Data Incomplete atau Tidak Valid
Penyebab : Struktur HTML berubah atau data tidak dimuat sepenuhnya.
Solusi : Periksa struktur HTML terbaru dan gunakan Selenium untuk menangani pemuatan data dinamis.
Studi Kasus: Scraping Tweets berdasarkan Hashtag
Sekarang kita akan melihat contoh bagaimana scraping tweets berdasarkan hashtag menggunakan Selenium.
Contoh Kode untuk Scraping Tweets berdasarkan Hashtag
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
import time
import csv
Konfigurasi webdriver
chrome_options = Options()
chrome_options.add_argument("--headless") # Jalankan browser tanpa GUI
chrome_options.add_argument("--disable-gpu")
service = Service(executable_path='/path/to/chromedriver') # Ganti dengan path ke chromedriver Anda
with open('tweets_hashtag.csv', 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(["Tweet"]) # Menulis header
for tweet in tweets:
writer.writerow([tweet.text])
Menutup browser
driver.quit()
Penjelasan Mendalam
URL Pencarian Twitter : Kita menggunakan URL pencarian Twitter dengan parameter query untuk hashtag yang diinginkan. url = f'https://twitter.com/search?q=%23{hashtag}&src=typed_query'
Menggulir Halaman : Sama seperti sebelumnya, kita menggunakan loop untuk menggulir halaman dan memuat lebih banyak konten.
Menyimpan Data dalam CSV : Data yang diambil disimpan dalam file CSV untuk analisis lebih lanjut.
mari kita lanjutkan dengan beberapa topik lanjutan yang penting dalam web scraping, seperti penanganan lebih lanjut untuk memastikan data berkualitas tinggi, serta penerapan konsep yang telah kita bahas dalam skenario nyata lainnya.
Langkah 8: Menangani Data yang Tidak Konsisten atau Buruk
Dalam web scraping, seringkali kita akan menghadapi data yang tidak konsisten atau tidak lengkap. Berikut adalah beberapa teknik untuk memastikan data yang diambil berkualitas tinggi:
1. Pembersihan Data
Menghapus Karakter Tak Perlu : Membersihkan teks dari karakter yang tidak perlu atau simbol yang tidak relevan.
Normalisasi Data : Mengubah semua teks menjadi huruf kecil, menghapus spasi tambahan, dll.
Validasi Data : Memastikan data sesuai dengan format yang diinginkan, seperti memastikan tanggal dalam format tertentu.
Contoh Kode Pembersihan Data:
import re
def clean_text(text):
Menghapus URL
text = re.sub(r'http\S+', '', text)
Menghapus mentions
text = re.sub(r'@\w+', '', text)
Menghapus hashtag
text = re.sub(r'#\w+', '', text)
Menghapus karakter khusus
text = re.sub(r'[^A-Za-z0-9\s]', '', text)
Menghapus spasi ekstra
text = re.sub(r'\s+', ' ', text).strip()
return text
Contoh penggunaan fungsi clean_text
for tweet in tweets:
cleaned_text = clean_text(tweet.text)
print(cleaned_text)
Langkah 9: Penggunaan Data untuk Analisis Lebih Lanjut
Setelah mendapatkan dan membersihkan data, langkah berikutnya adalah menggunakan data tersebut untuk analisis lebih lanjut. Ini bisa termasuk analisis sentimen, analisis tren, atau bahkan pelatihan model machine learning.
1. Analisis Sentimen
Menggunakan pustaka seperti TextBlob atau VADER untuk analisis sentimen sederhana.
Untuk scraping yang berjalan terus-menerus atau pada jadwal tertentu, kita bisa mengotomatiskan proses ini menggunakan task scheduler seperti cron di Unix atau Task Scheduler di Windows.
1. Menjalankan Skrip secara Berkala dengan Cron (Unix/Linux)
Tambahkan tugas cron untuk menjalankan skrip Python pada interval waktu tertentu.
Contoh Cron Job:
Buka crontab
crontab -e
Tambahkan baris berikut untuk menjalankan skrip setiap jam
2. Menjalankan Skrip secara Berkala dengan Task Scheduler (Windows)
Gunakan Task Scheduler untuk membuat tugas yang menjalankan skrip pada interval waktu tertentu.
mari kita lanjutkan dengan beberapa konsep lanjutan yang bisa memperkuat pemahaman Anda tentang web scraping dan analisis data menggunakan Python. Fokus kita akan pada teknik pengambilan data yang lebih canggih, pengelolaan data yang lebih efektif, serta beberapa studi kasus praktis.
Langkah 11: Teknik Pengambilan Data yang Lebih Canggih
1. Penggunaan XPath dengan Selenium
Selain CSS selectors, XPath bisa sangat berguna terutama ketika struktur HTML kompleks atau elemen tidak memiliki kelas atau ID yang unik.
Contoh Kode Menggunakan XPath:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
import time
Konfigurasi webdriver
chrome_options = Options()
chrome_options.add_argument("--headless")
service = Service(executable_path='/path/to/chromedriver')
Banyak situs menggunakan pagination untuk membagi data menjadi beberapa halaman. Selenium bisa digunakan untuk menavigasi melalui halaman-halaman tersebut.
Contoh Kode Navigasi Pagination:
from selenium.webdriver.common.keys import Keys
Menggulung dan menavigasi melalui halaman
for _ in range(5): # Contoh menggulir 5 kali
driver.find_element(By.TAG_NAME, 'body').send_keys(Keys.END)
time.sleep(SCROLL_PAUSE_TIME)
tweets = driver.find_elements(By.XPATH, '//div[@data-testid="tweet"]')
for tweet in tweets:
print(tweet.text)
Langkah 12: Pengelolaan Data yang Lebih Efektif
Setelah pengambilan data, penting untuk mengelolanya dengan baik agar mudah dianalisis. Kita bisa menggunakan pandas untuk memudahkan manipulasi dan analisis data.
1. Menggunakan Pandas untuk Penyimpanan dan Analisis Data
Pandas menyediakan struktur data yang sangat kuat seperti DataFrame yang memudahkan pengolahan data.
Contoh Kode Menggunakan Pandas:
import pandas as pd
Menyimpan tweet dalam DataFrame
tweet_texts = [tweet.text for tweet in tweets]
df = pd.DataFrame(tweet_texts, columns=['Tweet'])
Kita telah melalui berbagai teknik dan praktik untuk melakukan web scraping Twitter dengan Python, termasuk:
Penggunaan BeautifulSoup dan Selenium untuk mengakses dan mengambil data.
Penggunaan XPath dan CSS Selectors untuk menargetkan elemen HTML.
Pembersihan dan Pengelolaan Data menggunakan regex dan pandas.
Analisis Data dengan sentimen dan visualisasi menggunakan matplotlib.
Automatisasi dengan cron atau Task Scheduler.
Baik, mari kita lanjutkan dengan beberapa topik lanjutan yang lebih mendalam terkait web scraping dan analisis data, serta beberapa teknik praktis untuk memperkaya pemahaman dan keterampilan Anda.
Langkah 14: Penggunaan Proxies dan User Agents
Untuk menghindari deteksi dan pembatasan IP oleh situs web, Anda bisa menggunakan proxies dan mengatur User Agents. Ini membantu dalam menyamarkan permintaan scraping sebagai permintaan biasa dari pengguna yang berbeda-beda.
Menggunakan Proxies
Proxies bertindak sebagai perantara antara scraper Anda dan target situs web, memungkinkan Anda untuk mengubah alamat IP yang digunakan.
Contoh Kode dengan Proxies:
from selenium.webdriver.common.proxy import Proxy, ProxyType
Langkah 15: Mengambil Data Multimedias (Gambar dan Video)
Selain teks, seringkali kita perlu mengambil data multimedia seperti gambar dan video.
Mengambil Gambar
Contoh Kode Mengambil Gambar:
import requests
Mengambil URL gambar
images = driver.find_elements(By.TAG_NAME, 'img')
for img in images:
src = img.get_attribute('src')
img_data = requests.get(src).content
with open(f'images/{img.get_attribute("alt")}.jpg', 'wb') as handler:
handler.write(img_data)
Mengambil Video
Mengambil video bisa sedikit lebih rumit, karena sering kali video di-hosting pada layanan terpisah atau dalam format yang berbeda.
Contoh Kode Mengambil Video:
videos = driver.find_elements(By.TAG_NAME, 'video')
for video in videos:
src = video.get_attribute('src')
video_data = requests.get(src).content
with open(f'videos/{video.get_attribute("title")}.mp4', 'wb') as handler:
handler.write(video_data)
Langkah 16: Penanganan Captcha Otomatis
CAPTCHA adalah salah satu tantangan utama dalam web scraping. Ada beberapa metode untuk mengatasi CAPTCHA secara otomatis, meskipun harus digunakan dengan sangat hati-hati karena melibatkan aspek legalitas.
Menggunakan Layanan Pihak Ketiga
Layanan seperti 2Captcha atau Anti-Captcha menawarkan solusi untuk menyelesaikan CAPTCHA secara otomatis.
Contoh Kode Menggunakan 2Captcha:
import requests
def solve_captcha(api_key, site_key, url):
s = requests.Session()
Penting untuk selalu memperhatikan aspek keamanan dan etika saat melakukan web scraping.
1. Mematuhi Terms of Service (ToS)
Pastikan selalu membaca dan mematuhi ToS situs yang Anda scrape.
2. Menggunakan Data dengan Etis
Jangan menggunakan data untuk tujuan yang melanggar hukum atau tidak etis.
3. Menangani Data Sensitif dengan Hati-hati
Jangan mengungkap data pribadi atau sensitif tanpa izin.
Baik, kita akan melanjutkan dengan beberapa topik tambahan yang dapat memperkaya kemampuan Anda dalam web scraping dan analisis data. Fokus kita kali ini adalah pada teknik lanjutan seperti scraping data menggunakan API, penggunaan machine learning untuk analisis data, serta studi kasus tambahan.
Langkah 19: Menggunakan API untuk Pengambilan Data
API (Application Programming Interface) sering kali merupakan cara yang lebih stabil dan etis untuk mendapatkan data dibandingkan dengan scraping langsung dari HTML. Banyak situs web besar menyediakan API resmi untuk keperluan ini.
Contoh Penggunaan Twitter API dengan Tweepy
Twitter menyediakan API yang memungkinkan Anda untuk mengakses tweet, profil pengguna, dan data lainnya. Tweepy adalah pustaka Python yang memudahkan penggunaan Twitter API.
Langkah-langkah:
Buat akun developer di Twitter Developer dan buat aplikasi untuk mendapatkan kunci API.
for tweet in tweets:
print(f'{tweet.user.screen_name}: {tweet.text}')
Langkah 20: Menggunakan Machine Learning untuk Analisis Data
Setelah mendapatkan data, Anda bisa menggunakan teknik machine learning untuk analisis lebih lanjut, seperti klasifikasi, prediksi, atau analisis sentimen yang lebih canggih.
Analisis Sentimen dengan Machine Learning
Scikit-learn adalah pustaka Python yang sangat populer untuk machine learning. Kita akan melihat bagaimana melakukan analisis sentimen menggunakan model machine learning sederhana.
Contoh Kode Analisis Sentimen:
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score
Contoh data tweet dan label sentimen (positif/negatif)
data = [
('I love this product!', 'positive'),
('This is the worst experience ever.', 'negative'),
('Absolutely fantastic!', 'positive'),
('Not good at all.', 'negative')
]
Memisahkan data dan label
texts, labels = zip(*data)
Menggunakan CountVectorizer untuk mengubah teks menjadi vektor fitur
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(texts)
Studi Kasus 4: Scraping dan Menganalisis Data dari Forum
Mengambil data dari forum online dan menganalisis topik yang sedang tren.
Langkah-langkah:
Scrape judul dan isi thread dari forum.
Bersihkan dan simpan data.
Lakukan analisis frekuensi kata dan sentimen.
Contoh Kode:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
import pandas as pd
import re
import time
Selain BeautifulSoup dan Selenium, ada pustaka scraping lain yang lebih canggih seperti Scrapy.
Scrapy untuk Web Scraping
Scrapy adalah framework web scraping yang kuat dan cepat, cocok untuk proyek scraping skala besar.
Instal Scrapy:
pip install scrapy
Contoh Kode dengan Scrapy:
import scrapy
class QuotesSpider(scrapy.Spider):
name = "quotes"
start_urls = ['http://quotes.toscrape.com/']
def parse(self, response):
for quote in response.css('div.quote'):
yield {
'text': quote.css('span.text::text').get(),
'author': quote.css('small.author::text').get(),
'tags': quote.css('div.tags a.tag::text').getall(),
}
next_page = response.css('li.next a::attr(href)').get()
if next_page is not None:
yield response.follow(next_page, self.parse)
Menjalankan spider Scrapy
scrapy runspider quotes_spider.py -o quotes.json
Kesimpulan
Dengan mempelajari dan mempraktikkan langkah-langkah dan teknik lanjutan ini, Anda dapat meningkatkan kemampuan Anda dalam web scraping dan analisis data secara signifikan. Beberapa poin penting yang telah kita bahas:
Menggunakan API untuk Pengambilan Data : Memanfaatkan API resmi untuk stabilitas dan etika.
Machine Learning untuk Analisis Data : Menggunakan model machine learning untuk analisis sentimen dan prediksi.
Studi Kasus Praktis : Penerapan teknik scraping pada berbagai situs.
Pustaka Scraping Lanjutan : Menggunakan Scrapy untuk scraping skala besar.
Baik, mari kita teruskan dengan beberapa topik lanjutan yang lebih spesifik dan praktis dalam web scraping dan analisis data. Kita akan membahas beberapa teknik canggih seperti scraping dengan penggunaan Scrapy yang lebih mendalam, pengolahan data lebih lanjut dengan pandas, dan contoh kasus tambahan untuk memberikan pemahaman yang komprehensif.
Langkah 23: Scraping dengan Scrapy
Scrapy adalah framework scraping yang sangat kuat dan fleksibel, ideal untuk proyek scraping besar dan kompleks. Berikut adalah panduan lebih mendalam untuk menggunakan Scrapy.
Membuat Proyek Scrapy
Inisialisasi Proyek Scrapy : scrapy startproject myproject cd myproject
Membuat Spider Baru : scrapy genspider quotes quotes.toscrape.com
Struktur Proyek Scrapy : myproject/ : Folder proyek utama. myproject/spiders/ : Tempat spider diletakkan.
myproject/items.py : Definisi item yang akan di-scrape.
Langkah 24: Pengolahan Data Lanjutan dengan Pandas
Setelah mendapatkan data scraping, langkah berikutnya adalah mengolah dan menganalisis data tersebut. Pandas adalah pustaka yang sangat berguna untuk tujuan ini.
Penggunaan Pandas untuk Pengolahan Data
Membaca Data dari File : import pandas as pd df = pd.read_json('quotes.json')
Membersihkan Data : Menghapus Duplikasi : df.drop_duplicates(inplace=True)
Menghapus Baris yang Kosong : df.dropna(inplace=True)
Analisis Data : Frekuensi Kata : from collections import Counter all_tags = [tag for tags in df['tags'] for tag in tags] tag_counts = Counter(all_tags) print(tag_counts.most_common(10))
Analisis Sentimen : from collections import Counter all_tags = [tag for tags in df['tags'] for tag in tags] tag_counts = Counter(all_tags) print(tag_counts.most_common(10))
Visualisasi Data : import matplotlib.pyplot as plt # Visualisasi sentimen df['sentiment'].hist(bins=50) plt.title('Distribusi Sentimen') plt.xlabel('Sentimen') plt.ylabel('Frekuensi') plt.show()
Langkah 25: Studi Kasus Tambahan
Studi Kasus 5: Scraping dan Analisis Data Restoran dari Yelp
Langkah-langkah:
Scrape data restoran dari Yelp, termasuk nama, alamat, rating, dan ulasan.
Bersihkan dan simpan data.
Lakukan analisis sentimen dan visualisasi hasil.
Contoh Kode:
import scrapy
class YelpSpider(scrapy.Spider):
name = "yelp"
start_urls = ['https://www.yelp.com/search?find_desc=restaurants&find_loc=San+Francisco%2C+CA']
def parse(self, response):
for business in response.css('div.businessName__09f24__3Wql2'):
yield {
'name': business.css('a.link__09f24__1kwXV::text').get(),
'rating': business.css('div.i-stars__09f24__1T6rz::attr(aria-label)').get(),
'review_count': business.css('span.reviewCount__09f24__EUXPN::text').get(),
'address': business.css('address::text').get(),
}
next_page = response.css('a.next-link::attr(href)').get()
if next_page is not None:
yield response.follow(next_page, self.parse)
plt.scatter(df['rating'], df['sentiment'])
plt.title('Rating vs Sentimen')
plt.xlabel('Rating')
plt.ylabel('Sentimen')
plt.show()
Langkah 26: Penggunaan Teknologi Cloud untuk Web Scraping
Dalam proyek skala besar, menjalankan scraping di server lokal mungkin tidak efisien. Layanan cloud seperti AWS, Google Cloud, atau Azure dapat membantu dengan menyediakan infrastruktur yang lebih kuat dan skalabel.
Contoh Menggunakan AWS Lambda untuk Web Scraping
AWS Lambda memungkinkan Anda menjalankan kode tanpa menyediakan atau mengelola server.
Membuat Fungsi Lambda : Buat fungsi Lambda baru di AWS Console.
Unggah kode scraping Anda sebagai file zip atau menggunakan editor di AWS Console.
Mengonfigurasi IAM Role : Berikan izin yang diperlukan untuk Lambda berinteraksi dengan layanan AWS lainnya.
Menggunakan AWS API Gateway : Gunakan API Gateway untuk memanggil fungsi Lambda dari HTTP request.
Langkah 27: Automatisasi dan Orkestrasi Scraping
Untuk scraping berulang atau proyek skala besar, otomatisasi dan orkestrasi penting untuk efisiensi dan pengelolaan.
Menggunakan Apache Airflow
Apache Airflow adalah platform untuk mengotomatisasi alur kerja scraping.
Instalasi Airflow : pip install apache-airflow
Membuat DAG (Directed Acyclic Graph) : Definisikan alur kerja scraping sebagai DAG di Airflow.
Contoh Kode DAG di Airflow:
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from datetime import datetime, timedelta
import scraping_module # Impor modul scraping Anda
Dengan menguasai langkah-langkah dan teknik-teknik ini, Anda dapat melakukan web scraping dengan lebih efektif, efisien, dan etis. Berikut adalah beberapa poin penting yang telah kita bahas:
Scrapy untuk Scraping yang Kompleks : Menggunakan Scrapy untuk proyek scraping skala besar.
Pengolahan Data dengan Pandas : Membersihkan, menganalisis, dan memvisualisasikan data dengan pandas.
Studi Kasus Tambahan : Penerapan teknik scraping pada situs e-commerce dan forum.
Penggunaan Teknologi Cloud : Menjalankan scraping di cloud untuk efisiensi dan skalabilitas.
Automatisasi dengan Airflow : Mengotomatisasi alur kerja scraping menggunakan Apache Airflow.
Metode Belajar di Cerdas Inovasi Digital
Kelas online live via Zoom bersama instruktur berpengalaman, praktik langsung dengan studi kasus nyata, dan rekaman sesi yang bisa diputar ulang. Tersedia juga paket in-house training untuk kebutuhan perusahaan di seluruh Indonesia.
Hubungi kami untuk konsultasi jadwal dan paket yang paling sesuai dengan kebutuhan Anda.
Kenapa Ambil Kursus Bimbingan Skripsi/Tesis/Disertasi Ini
Kursus Bimbingan Skripsi/Tesis/Disertasi ini dirancang untuk yang ingin belajar langsung praktik lewat sesi live bersama instruktur berpengalaman.