Pengikisan Web dan Pembangunan Bot · Pelajaran

Mengekstrak Data daripada JavaScript

Pelajari cara mendapatkan data yang dijana atau dimuatkan oleh JavaScript, termasuk kandungan daripada panggilan AJAX dan aplikasi satu halaman.

Pelajaran 3 daripada 411 langkah

Mengekstrak Data daripada JavaScript ialah pelajaran Pengikisan Web dan Pembangunan Bot percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Pengikisan Web dan Pembangunan Bot, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Pengikisan Web dan Pembangunan Bot merangkumi sejumlah 4 pelajaran.

Kandungan Web Dinamik Dijelaskan

Banyak laman web moden tidak memuatkan semua kandungannya sekaligus. Sebaliknya, laman tersebut menggunakan JavaScript untuk mendapatkan data dan mengemas kini halaman selepas halaman itu dimuatkan pada awalnya. Ini dipanggil kandungan dinamik.

Alat pengikisan tradisional seperti Requests dan BeautifulSoup hanya melihat HTML awal. Alat tersebut tidak dapat melihat perkara yang dimuatkan oleh JavaScript kemudian.

Peranan JavaScript dalam Pemuatan

JavaScript boleh memuatkan data baharu melalui beberapa cara:

  • Panggilan AJAX: JavaScript dan XML tak segerak. Pelayar meminta data daripada pelayan di latar belakang tanpa memuatkan semula keseluruhan halaman.
  • Manipulasi DOM: JavaScript menambah, membuang atau mengubah elemen secara langsung dalam struktur halaman (Model Objek Dokumen).
  • Aplikasi Satu Halaman (SPA): Keseluruhan laman web dibina untuk memuatkan kandungan dan melakukan navigasi secara dinamik tanpa penyegaran halaman penuh.

Pemuatan dinamik ini menjadikan pengikisan lebih kompleks.

Apabila Requests dan BS4 Tidak Memadai

Apabila anda menggunakan pustaka requests Python, anda menerima HTML mentah yang dihantar oleh pelayan pada awalnya. Jika laman web itu kemudiannya menggunakan JavaScript untuk memuatkan lebih banyak data, data tersebut tidak akan terdapat dalam HTML yang anda terima.

BeautifulSoup hanya boleh menghuraikan HTML yang diberikan kepadanya. Ia tidak boleh melaksanakan JavaScript untuk mendapatkan kandungan tambahan atau menunggu kandungan itu muncul.

Selenium untuk Kandungan Dinamik

Di sinilah Selenium menjadi penting. Selenium mengawal pelayar web sebenar (seperti Chrome atau Firefox) secara teratur cara.

Apabila Selenium membuka halaman, pelayar melaksanakan semua JavaScript, termasuk sebarang panggilan AJAX atau manipulasi DOM. Ini bermakna Selenium melihat halaman yang dirender sepenuhnya, sama seperti pengguna manusia.

Menunggu Elemen Muncul

Memandangkan kandungan dimuatkan secara dinamik, kandungan itu mungkin belum tersedia apabila Selenium mula-mula memuatkan halaman. Anda perlu memberitahu Selenium supaya menunggu sehingga elemen atau syarat tertentu dipenuhi sebelum cuba mengekstrak data.

Jika anda tidak menunggu, skrip anda mungkin cuba mencari elemen sebelum JavaScript merendernya, lalu menyebabkan ralat atau kehilangan data.

Menggunakan Penungguan Eksplisit

WebDriverWait Selenium yang digabungkan dengan ExpectedConditions (EC) membolehkan anda menetapkan penungguan eksplisit. Ini memberitahu Selenium supaya menunggu selama tempoh maksimum sehingga syarat tertentu menjadi benar.

Syarat yang biasa termasuk menunggu sehingga elemen kelihatan, boleh diklik atau wujud dalam DOM.

Cuba jalankan contoh ini:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

def main():
    driver = webdriver.Chrome()
    driver.get("https://www.selenium.dev/selenium/web/dynamic.html")

    # Click a button that will make an element appear after a delay
    driver.find_element(By.ID, "adder").click()

    # Wait up to 10 seconds for the new element to appear
    try:
        new_element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.ID, "box0"))
        )
        print("New element found:", new_element.text)
    except Exception as e:
        print("Element not found within time limit:", e)

    driver.quit()

if __name__ == "__main__":
    main()

Mengekstrak Data yang Dirender

Selepas berjaya menunggu kandungan dinamik muncul, pengekstrakan data adalah serupa dengan cara anda mengekstrak kandungan statik menggunakan Selenium.

Anda boleh menggunakan kaedah seperti find_element(By.ID, "id_name"), find_element(By.CLASS_NAME, "class_name") atau find_element(By.CSS_SELECTOR, "css_selector") untuk mencari elemen. Kemudian, anda boleh mendapatkan kandungan teks atau atributnya.

Kod: Dapatkan Teks Dinamik

Contoh ini menunjukkan cara menunggu elemen dan kemudian mengekstrak teksnya. Bayangkan halaman yang mesej "Loading..." berubah menjadi data sebenar selepas beberapa saat.

Cuba jalankan contoh ini:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

def main():
    driver = webdriver.Chrome()
    # Using a simple test page that changes content
    driver.get("https://www.selenium.dev/selenium/web/dynamic.html")

    # Click button to reveal content
    driver.find_element(By.ID, "reveal").click()

    # Wait for the content to be visible
    try:
        # The 'revealed' div becomes visible
        revealed_div = WebDriverWait(driver, 10).until(
            EC.visibility_of_element_located((By.ID, "revealed"))
        )
        print("Revealed content:", revealed_div.text)
    except Exception as e:
        print("Revealed content not found:", e)

    driver.quit()

if __name__ == "__main__":
    main()

Mengikis Aplikasi Satu Halaman

Aplikasi Satu Halaman (SPA) ialah laman web yang memuatkan satu halaman HTML, kemudian mengemas kini kandungan secara dinamik apabila pengguna berinteraksi dengannya. Navigasi dalam SPA selalunya tidak melibatkan pemuatan semula halaman penuh.

Selenium juga mengendalikan SPA dengan baik kerana ia bertindak sebagai pelayar lengkap. Anda berinteraksi dengan elemen (seperti mengklik pautan navigasi) dan Selenium melaksanakan JavaScript untuk mengemas kini DOM. Kemudian, anda menggunakan teknik menunggu dan pengekstrakan yang sama.

Semakan Pantas tentang Penungguan

Apabila mengikis kandungan dinamik yang muncul selepas halaman dimuatkan pada awalnya, teknik Selenium yang manakah penting untuk memastikan kandungan tersedia sebelum cuba mengekstraknya?

Imbas Kembali: Pengekstrakan Data Dinamik

Syabas! Anda telah mempelajari cara mengendalikan kandungan web dinamik:

  • Banyak laman menggunakan JavaScript untuk panggilan AJAX, manipulasi DOM dan SPA.
  • Alat tradisional seperti Requests dan BeautifulSoup tidak boleh melaksanakan JavaScript.
  • Selenium, dengan mengawal pelayar lengkap, boleh merender JavaScript.
  • Penungguan eksplisit penting untuk memastikan kandungan yang dimuatkan secara dinamik tersedia sebelum pengekstrakan.

Kemahiran ini membuka akses kepada sejumlah besar laman web moden untuk projek pengikisan anda!

Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
12
Pelajaran
48

Soalan Lazim

Adakah pelajaran “Mengekstrak Data daripada JavaScript” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Pengikisan Web dan Pembangunan Bot, termasuk “Mengekstrak Data daripada JavaScript”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Pengikisan Web dan Pembangunan Bot merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Mengekstrak Data daripada JavaScript”?

Pelajari cara mendapatkan data yang dijana atau dimuatkan oleh JavaScript, termasuk kandungan daripada panggilan AJAX dan aplikasi satu halaman. Anda berlatih Pengikisan Web dan Pembangunan Bot menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Pengikisan Web dan Pembangunan Bot?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Pengikisan Web dan Pembangunan Bot di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Mengekstrak Data daripada JavaScript” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Pengikisan Web dan Pembangunan Bot ini?

Ya. Setiap pelajaran Pengikisan Web dan Pembangunan Bot menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Pengenalan kepada Selenium
  2. Mengautomatikkan Interaksi Pelayar
  3. Mengekstrak Data daripada JavaScript
  4. Strategi Menunggu untuk Halaman Dinamik
← Kembali ke Pengikisan Web dan Pembangunan Bot