Mengikis kandungan dinamik dari halaman web boleh menimbulkan cabaran apabila menggunakan kaedah statik seperti urllib2.urlopen(request) dalam Python . Kandungan sedemikian sering dijana dan dilaksanakan oleh JavaScript yang dibenamkan dalam halaman.
Satu pendekatan untuk menangani isu ini ialah memanfaatkan rangka kerja Selenium dengan Phantom JS sebagai pemacu web. Pastikan Phantom JS dipasang dan binarinya tersedia dalam laluan semasa.
Berikut ialah contoh untuk menggambarkan:
import requests from bs4 import BeautifulSoup response = requests.get(my_url) soup = BeautifulSoup(response.text) soup.find(id="intro-text") # Result: <p>
Kod ini akan mendapatkan semula halaman tanpa sokongan JavaScript. Untuk mengikis dengan sokongan JS, gunakan Selenium:
from selenium import webdriver driver = webdriver.PhantomJS() driver.get(my_url) p_element = driver.find_element_by_id(id_='intro-text') print(p_element.text) # Result: 'Yay! Supports javascript'
Sebagai alternatif, anda boleh menggunakan perpustakaan Python yang direka khusus untuk mengikis tapak web dipacu JavaScript, seperti dryscrape:
import dryscrape from bs4 import BeautifulSoup session = dryscrape.Session() session.visit(my_url) response = session.body() soup = BeautifulSoup(response) soup.find(id="intro-text") # Result: <p>
Atas ialah kandungan terperinci Bagaimana untuk Mengikis Kandungan Diberikan JavaScript Dinamik dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!