Scraping Web dengan lxml Python: Tutorial Komprehensif untuk Pemula

Pichai Nurjanah
Diposting oleh
Pichai Nurjanah

Pilih dan Beli Proxy

Scraping Web dengan lxml Python: Tutorial Komprehensif untuk Pemula
0 Komentar

Ekosistem Python yang luas memiliki segudang perpustakaan yang membuat web scraping menjadi tugas yang mudah, dan lxml tentunya merupakan salah satu pilihan utama. Tutorial ini bertujuan untuk memberikan panduan lengkap tentang mengapa lxml adalah pilihan terbaik untuk web scraping, langkah-langkah untuk membuat lxml scraper yang tangguh, dan contoh praktis untuk membantu Anda memulai. Tutorial ini juga menggabungkan wawasan berharga untuk memastikan jumlah maksimum permintaan yang berhasil selama web scraping.

Pengantar Web Scraping dengan lxml dengan Python

Pengikisan web menggunakan lxml Python melibatkan ekstraksi dan penataan data dari kode HTML atau XML yang diunduh. Tidak seperti beberapa perpustakaan yang menangani pengunduhan dan penguraian, lxml berspesialisasi dalam penguraian. Untuk mengunduh halaman web, Anda biasanya menggunakan klien HTTP seperti Permintaan. Setelah data HTML atau XML diunduh, lxml kemudian dapat mengurai data ini, memungkinkan Anda mengakses elemen dan atribut tertentu secara efektif.

Mengapa Memilih lxml Python untuk Web Scraping?

Memilih lxml untuk proyek pengikisan web Anda memiliki beberapa manfaat:

Keuntungan:

  1. Kemungkinan diperpanjang: Dibangun di atas pustaka C libxml2 dan libxslt, lxml sangat dapat diperluas dan menawarkan keunggulan kecepatan pustaka C asli serta kesederhanaan Python.
  2. Struktur XML: Mendukung tiga bahasa skema untuk menentukan struktur XML dan mengimplementasikan XPath sepenuhnya, menjadikannya sangat kuat untuk menavigasi elemen dalam dokumen XML.
  3. Penjelajahan Data: Mampu melintasi berbagai struktur XML dan HTML, memungkinkan navigasi melalui anak, saudara, dan elemen lainnya. Fitur ini memberikan keunggulan dibandingkan parser lain seperti BeautifulSoup.
  4. Efisiensi sumber daya: Mengkonsumsi lebih sedikit memori dibandingkan perpustakaan lain, sehingga sangat efisien untuk mengurai kumpulan data besar.

Namun, lxml tidak selalu merupakan pilihan terbaik untuk mengurai HTML yang ditulis dengan buruk atau rusak. Dalam kasus seperti itu, Anda dapat menggunakan BeautifulSoup sebagai opsi cadangan.

Langkah-langkah Membuat Parser lxml yang Kuat dengan Python

Langkah 1: Pilih Alat yang Sesuai

Sebelum Anda mulai mengikis, Anda harus memilih seperangkat alat yang tepat. Untuk klien HTTP, Python menawarkan perpustakaan seperti Requests, HTTPX, Dan aiohttp. Jika target Anda adalah situs web dinamis yang mengandalkan JavaScript, Anda mungkin juga memerlukan browser tanpa kepala seperti Selenium.

Langkah 2: Identifikasi Halaman Web Target Anda

Setelah menyiapkan alat Anda, identifikasi halaman web yang ingin Anda kikis. Pastikan untuk membaca situs webnya robots.txt untuk mengetahui aturan web scraping pada situs tersebut.

Langkah 3: Pahami Pedoman Pengikisan Web

Memahami praktik terbaik web scraping dan potensi hambatan seperti CAPTCHA atau larangan IP sangatlah penting. Jika Anda mengantisipasi masalah seperti itu, menggunakan server proxy yang berputar dapat bermanfaat.

Langkah 4: Menyiapkan Header

Header HTTP membantu meniru perilaku pengguna sebenarnya. Atur ini dengan benar untuk memastikan scraper Anda tidak diblokir.

Pengikisan Web dengan lxml Python: Tutorial Langkah-demi-Langkah

Prasyarat

Sebelum memulai, Anda memerlukan yang berikut ini:

  1. Python 3.x: Pastikan Python 3.x diinstal pada sistem Anda. Anda dapat mengunduhnya dari Situs web resmi Python.
  2. Editor Kode: Editor teks apa pun yang mendukung Python dapat digunakan, meskipun IDE tingkat lanjut seperti Visual Studio Code, Notepad++, atau PyCharm dapat menawarkan lebih banyak fungsi seperti debugging, penyorotan sintaksis, dan pelengkapan otomatis.
  3. Permintaan dan perpustakaan lxml: Ini adalah pustaka Python pihak ketiga yang masing-masing digunakan untuk permintaan HTTP dan penguraian HTML. Untuk memasang, buka terminal Anda dan jalankan:
pip install requests lxml

1. Menyiapkan Lingkungan Pengembangan Anda

Penjelasan:

Pada langkah ini, Anda mempersiapkan lingkungan pengkodean untuk pengembangan. Pilih lokasi di komputer tempat Anda ingin menyimpan skrip.

  • Membuat File Python: Buka editor kode Anda dan buat file Python baru bernama imdb_scraper.py.

2. Mengambil Konten Halaman Web

Kode:

import requests

url = "https://www.imdb.com/chart/moviemeter/"
response = requests.get(url)

if response.status_code == 200:
    page_content = response.text
else:
    print("Failed to retrieve the page")

Penjelasan:

Di bagian ini, Anda mengambil konten HTML dari halaman film paling populer di IMDb.

  • Pengimporan requests: Itu requests perpustakaan digunakan untuk membuat permintaan HTTP.
  • Mengambil Konten: requests.get(url) mengambil konten halaman web dan menyimpannya di response variabel.
  • Pemeriksaan Kode Status: Merupakan praktik yang baik untuk memeriksa kode status HTTP (200 berarti OK). Jika bukan 200, ada masalah saat mengambil halaman tersebut.

3. Mengurai Halaman Web

Kode:

from lxml import html

tree = html.fromstring(page_content)

Penjelasan:

Di sini Anda mengonversi konten HTML yang diambil menjadi struktur pohon yang dapat dicari.

  • Pengimporan lxml.html: Modul ini membantu membuat struktur pohon dari konten HTML.
  • Membuat Struktur Pohon: html.fromstring(page_content) mem-parsing konten HTML yang disimpan di dalamnya page_content dan menghasilkan struktur seperti pohon yang Anda simpan dalam variabel tree.

4. Mengekstraksi Data

Kode:

movie_titles = tree.xpath('//td[@class="titleColumn"]/a/text()')
imdb_ratings = tree.xpath('//td[@class="imdbRating"]/strong/text()')

Penjelasan:

Sekarang Anda memiliki struktur halaman web seperti pohon, Anda dapat mencari dan mengekstrak data darinya.

  • Menggunakan XPath: XPath adalah bahasa kueri yang dapat menavigasi dokumen XML. Anda menggunakannya di sini untuk menentukan elemen dan atribut yang ingin Anda kikis.
  • Mengekstraksi Judul dan Peringkat: Anda mengumpulkan judul film dan peringkat IMDb menggunakan kueri XPath yang menunjukkan lokasinya dalam struktur HTML.

5. Menyimpan Data

Kode:

for title, rating in zip(movie_titles, imdb_ratings):
    print(f"Movie: {title}, Rating: {rating}")

Penjelasan:

Terakhir, Anda ingin menyimpan atau menampilkan data yang tergores.

  • Daftar Zip: Itu zip fungsi memasangkan setiap judul film dengan rating yang sesuai.
  • Mencetak Data: Dalam contoh ini, kami cukup mencetak setiap pasangan. Dalam aplikasi dunia nyata, Anda mungkin ingin menyimpan data ini dalam database atau file.

Contoh Kode Lengkap

# Importing required libraries
import requests
from lxml import html

# Step 2: Fetch Web Page Content
url = "https://www.imdb.com/chart/moviemeter/"
response = requests.get(url)

if response.status_code == 200:
    page_content = response.text
else:
    print("Failed to retrieve the page")

# Step 3: Parse the Web Page
tree = html.fromstring(page_content)

# Step 4: Extract Data
movie_titles = tree.xpath('//td[@class="titleColumn"]/a/text()')
imdb_ratings = tree.xpath('//td[@class="imdbRating"]/strong/text()')

# Step 5: Store and/or Output Data
for title, rating in zip(movie_titles, imdb_ratings):
    print(f"Movie: {title}, Rating: {rating}")

Dengan mengikuti tutorial yang panjang dan mendetail ini, Anda akan dapat dengan percaya diri mengumpulkan informasi tentang film terpopuler dari IMDb. Seperti biasa, sangat penting untuk menghormati persyaratan layanan situs web mana pun yang Anda buat.

Catatan Akhir

Pengikisan web bisa menjadi proses yang rumit, tetapi pustaka lxml Python menyederhanakan banyak kerumitan. Dengan alat yang tepat, pengetahuan tentang praktik terbaik, dan strategi yang jelas, Anda dapat menjadikan upaya web scraping Anda efisien dan sukses. Tutorial ini bertujuan untuk mencakup aspek-aspek ini secara komprehensif. Selamat menggores!

Pengikisan Web dengan lxml Python

TINGGALKAN KOMENTAR

Proksi Pusat Data
Proksi Bersama

Sejumlah besar server proxy yang andal dan cepat.

Mulai dari$0.06 per IP
Memutar Proxy
Memutar Proxy

Proksi berputar tanpa batas dengan model bayar per permintaan.

Mulai dari$0.0001 per permintaan
Proksi Pribadi
Proksi UDP

Proksi dengan dukungan UDP.

Mulai dari$0.4 per IP
Proksi Pribadi
Proksi Pribadi

Proksi khusus untuk penggunaan individu.

Mulai dari$5 per IP
Proksi Tidak Terbatas
Proksi Tidak Terbatas

Server proxy dengan lalu lintas tidak terbatas.

Mulai dari$0.06 per IP
Siap menggunakan server proxy kami sekarang?
dari $0.06 per IP