Mengekstrak Data daripada JavaScript
Pelajari cara mendapatkan data yang dijana atau dimuatkan oleh JavaScript, termasuk kandungan daripada panggilan AJAX dan aplikasi satu halaman.
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!
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
- Pengenalan kepada Selenium
- Mengautomatikkan Interaksi Pelayar
- Mengekstrak Data daripada JavaScript
- Strategi Menunggu untuk Halaman Dinamik