Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Python Boleh Mendapatkan Nilai daripada Kandungan HTML Dijana Secara Dinamik?

Bagaimanakah Python Boleh Mendapatkan Nilai daripada Kandungan HTML Dijana Secara Dinamik?

Barbara Streisand
Lepaskan: 2024-10-19 07:45:02
asal
661 orang telah melayarinya

How Can Python Retrieve Values from Dynamically Generated HTML Content?

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:

  • Menghuraikan AJAX JSON Secara Terus: Jika data diambil melalui permintaan AJAX, anda boleh memintas dan menghuraikan respons JSON.
  • Gunakan Jurubahasa JavaScript Luar Talian: Pasang dan gunakan alatan seperti SpiderMonkey atau Crowbar untuk menjalankan kod JavaScript dan menjana elemen DOM.
  • Gunakan Alat Automasi Penyemak Imbas: Gunakan pemacu seperti Selenium atau Watir untuk berinteraksi dengan penyemak imbas tanpa kepala, melaksanakan JavaScript dan mengakses HTML yang diberikan.

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan