Mengikis Web dengan Python's lxml: Tutorial Komprehensif untuk Pemula

Pichai Nurjanah
Dihantar oleh
Pichai Nurjanah

Pilih dan Beli Proksi

Mengikis Web dengan Python's lxml: Tutorial Komprehensif untuk Pemula
0 Komen

Ekosistem Python yang luas mempunyai pelbagai pustaka yang menjadikan pengikisan web sebagai tugas yang mudah, dan lxml sememangnya salah satu pilihan utama. Tutorial ini bertujuan untuk menyediakan panduan lengkap tentang sebab lxml ialah pilihan terbaik untuk mengikis web, langkah-langkah untuk membina pengikis lxml yang teguh dan contoh praktikal untuk membantu anda bermula. Tutorial ini juga menggabungkan cerapan berharga untuk memastikan bilangan maksimum permintaan yang berjaya semasa mengikis web.

Pengenalan kepada Web Scraping dengan lxml dalam Python

Pengikisan web menggunakan lxml Python melibatkan pengekstrakan dan penstrukturan data daripada kod HTML atau XML yang dimuat turun. Tidak seperti sesetengah perpustakaan yang mengendalikan kedua-dua muat turun dan penghuraian, lxml mengkhususkan diri dalam penghuraian. Untuk memuat turun halaman web, anda biasanya menggunakan klien HTTP seperti Permintaan. Setelah data HTML atau XML dimuat turun, lxml kemudiannya boleh menghuraikan data ini, membolehkan anda mengakses elemen dan atribut tertentu dengan berkesan.

Mengapa Pilih lxml Python untuk Mengikis Web?

Memilih lxml untuk projek mengikis web anda datang dengan beberapa faedah:

Kelebihan:

  1. Kebolehlanjutan: Dibina di atas perpustakaan C libxml2 dan libxslt, lxml sangat boleh dikembangkan dan menawarkan faedah kelajuan perpustakaan C asli bersama-sama dengan kesederhanaan Python.
  2. Struktur XML: Menyokong tiga bahasa skema untuk menentukan struktur XML dan melaksanakan sepenuhnya XPath, menjadikannya sangat berkuasa untuk menavigasi elemen dalam dokumen XML.
  3. Traversal Data: Mampu merentasi pelbagai struktur XML dan HTML, membenarkan navigasi melalui kanak-kanak, adik-beradik dan elemen lain. Ciri ini memberikannya kelebihan berbanding parser lain seperti BeautifulSoup.
  4. Kecekapan Sumber: Menggunakan kurang memori berbanding perpustakaan lain, menjadikannya sangat cekap untuk menghuraikan set data yang besar.

Walau bagaimanapun, lxml bukanlah pilihan terbaik untuk menghuraikan HTML yang ditulis dengan buruk atau rosak. Dalam kes sedemikian, anda boleh menggunakan BeautifulSoup sebagai pilihan sandaran.

Langkah-langkah untuk Membina Penghurai lxml yang Teguh dalam Python

Langkah 1: Pilih Alat yang Sesuai

Sebelum anda mula mengikis, anda perlu memilih set alat yang betul. Untuk klien HTTP, Python menawarkan perpustakaan seperti Requests, HTTPX, dan aiohttp. Jika sasaran anda ialah tapak web dinamik yang bergantung pada JavaScript, anda juga mungkin memerlukan penyemak imbas tanpa kepala seperti Selenium.

Langkah 2: Kenal pasti Halaman Web Sasaran Anda

Selepas menyediakan alatan anda, kenal pasti halaman web yang ingin anda kikis. Pastikan anda membaca laman web robots.txt untuk mengetahui peraturan untuk mengikis web di tapak tersebut.

Langkah 3: Fahami Garis Panduan Mengikis Web

Memahami amalan terbaik mengikis web dan kemungkinan sekatan jalan seperti CAPTCHA atau larangan IP adalah penting. Dalam kes di mana anda menjangkakan isu sedemikian, menggunakan pelayan proksi berputar boleh memberi manfaat.

Langkah 4: Menyediakan Pengepala

Pengepala HTTP membantu dalam meniru gelagat pengguna sebenar. Sediakan ini dengan betul untuk memastikan pengikis anda tidak tersekat.

Mengikis Web dengan lxml Python: Tutorial Langkah Demi Langkah

Prasyarat

Sebelum memulakan, anda memerlukan yang berikut:

  1. Python 3.x: Pastikan Python 3.x dipasang pada sistem anda. Anda boleh memuat turun dari Laman web rasmi Python.
  2. Editor Kod: Mana-mana editor teks yang menyokong Python akan berjaya, walaupun IDE lanjutan seperti Visual Studio Code, Notepad++, atau PyCharm boleh menawarkan lebih banyak fungsi seperti penyahpepijatan, penyerlahan sintaks dan pelengkapan automatik.
  3. Permintaan dan perpustakaan lxml: Ini adalah perpustakaan Python pihak ketiga yang digunakan untuk permintaan HTTP dan penghuraian HTML, masing-masing. Untuk memasang, buka terminal anda dan jalankan:
pip install requests lxml

1. Sediakan Persekitaran Pembangunan Anda

Penjelasan:

Dalam langkah ini, anda menyediakan persekitaran pengekodan anda untuk pembangunan. Pilih lokasi pada komputer anda di mana anda ingin menyimpan skrip anda.

  • Mencipta Fail Python: Buka editor kod anda dan buat fail Python baharu bernama imdb_scraper.py.

2. Mengambil Kandungan Halaman Web

Kod:

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:

Dalam bahagian ini, anda mengambil kandungan HTML halaman filem paling popular IMDb.

  • Mengimport requests: The requests perpustakaan digunakan untuk membuat permintaan HTTP.
  • Mengambil Kandungan: requests.get(url) mengambil kandungan halaman web dan menyimpannya dalam response pembolehubah.
  • Semakan Kod Status: Amalan yang baik untuk menyemak kod status HTTP (200 bermaksud OK). Jika bukan 200, terdapat masalah untuk mengambil halaman.

3. Menghuraikan Halaman Web

Kod:

from lxml import html

tree = html.fromstring(page_content)

Penjelasan:

Di sini anda menukar kandungan HTML yang diambil kepada struktur pokok yang boleh dicari.

  • Mengimport lxml.html: Modul ini membantu untuk mencipta struktur pokok daripada kandungan HTML.
  • Mencipta Struktur Pokok: html.fromstring(page_content) menghuraikan kandungan HTML yang disimpan page_content dan menjana struktur seperti pokok yang anda simpan dalam pembolehubah tree.

4. Mengekstrak Data

Kod:

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

Penjelasan:

Memandangkan anda mempunyai struktur halaman web seperti pokok, anda boleh mencari dan mengekstrak data daripadanya.

  • Menggunakan XPath: XPath ialah bahasa pertanyaan yang boleh menavigasi melalui dokumen XML. Anda menggunakannya di sini untuk menentukan elemen dan atribut yang ingin anda kikis.
  • Mengekstrak Tajuk dan Penilaian: Anda mengumpul tajuk filem dan penilaian IMDb menggunakan pertanyaan XPath yang menentukan lokasinya dalam struktur HTML.

5. Menyimpan Data

Kod:

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

Penjelasan:

Akhir sekali, anda perlu menyimpan atau memaparkan data yang dikikis.

  • Mengezip Senarai: The zip fungsi memasangkan setiap tajuk filem dengan rating yang sepadan.
  • Mencetak Data: Dalam contoh ini, kami hanya mencetak setiap pasangan. Dalam aplikasi dunia sebenar, anda mungkin mahu menyimpan data ini dalam pangkalan data atau fail.

Contoh Kod Penuh

# 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 lanjutan dan terperinci ini, anda seharusnya dapat mengikis maklumat tentang filem paling popular daripada IMDb dengan yakin. Seperti biasa, adalah penting untuk menghormati syarat perkhidmatan mana-mana tapak web yang anda cari.

Ucapan Akhir

Pengikisan web boleh menjadi proses yang rumit, tetapi perpustakaan lxml Python memudahkan banyak kerumitan. Dengan alatan yang betul, pengetahuan tentang amalan terbaik dan strategi yang jelas, anda boleh menjadikan usaha mengikis web anda cekap dan berjaya. Tutorial ini bertujuan untuk merangkumi aspek-aspek ini secara menyeluruh. Selamat mengikis!

Mengikis Web dengan lxml Python

TINGGALKAN KOMEN

Proksi Pusat Data
Proksi Dikongsi

Sebilangan besar pelayan proksi yang boleh dipercayai dan pantas.

Bermula pada$0.06 setiap IP
Proksi Berputar
Proksi Berputar

Proksi berputar tanpa had dengan model bayar setiap permintaan.

Bermula pada$0.0001 setiap permintaan
Proksi Persendirian
Proksi UDP

Proksi dengan sokongan UDP.

Bermula pada$0.4 setiap IP
Proksi Persendirian
Proksi Persendirian

Proksi khusus untuk kegunaan individu.

Bermula pada$5 setiap IP
Proksi tanpa had
Proksi tanpa had

Pelayan proksi dengan trafik tanpa had.

Bermula pada$0.06 setiap IP
Bersedia untuk menggunakan pelayan proksi kami sekarang?
daripada $0.06 setiap IP