Cara Mendapatkan Nilai daripada Kandungan HTML Dinamik Menggunakan Python
Apabila cuba mendapatkan data daripada tapak web yang memuatkan kandungan secara dinamik, kaedah konvensional menggunakan Permintaan Python atau perpustakaan BeautifulSoup mungkin gagal. Ini kerana perpustakaan ini tidak mentafsir kod JavaScript yang menjana data.
Memahami Masalah
Dalam contoh yang disediakan, halaman yang dimaksudkan menggunakan templat Handlebars untuk mencipta kandungan dinamik. Apabila memeriksa sumber HTML dengan alat pembangun penyemak imbas, anda mungkin menemui ruang letak templat seperti "{{formatPrice median}}" dan bukannya nilai sebenar.
Penyelesaian
Untuk mendapatkan semula nilai sebenar daripada kandungan yang dijana secara dinamik, anda perlu menggunakan teknik yang mentafsir JavaScript. Pertimbangkan pilihan berikut:
Menggunakan Selenium dengan BeautifulSoup
Untuk halaman contoh ( eve-central.com), menggunakan Selenium untuk mendapatkan nilai "median":
<code class="python">from bs4 import BeautifulSoup from selenium import webdriver driver = webdriver.Firefox() driver.get('http://eve-central.com/home/quicklook.html?typeid=34') html = driver.page_source soup = BeautifulSoup(html) for tag in soup.find_all('span', class_="a-price-amount"): print(tag.text)</code>
Kod ini menggunakan Selenium untuk memuatkan halaman dan BeautifulSoup untuk menghuraikan HTML yang diberikan, mengekstrak teg dengan ID kelas tertentu dan mencetak kandungan teks mereka, yang termasuk nilai "median" yang dikehendaki.
Atas ialah kandungan terperinci Bagaimanakah Python Boleh Mendapatkan Nilai daripada Kandungan HTML Dijana Secara Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!