Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mengikis Kandungan Diberikan JavaScript Dinamik dalam Python?

Bagaimana untuk Mengikis Kandungan Diberikan JavaScript Dinamik dalam Python?

DDD
DDDasal
2024-12-22 09:58:04413semak imbas

How to Scrape Dynamic JavaScript-Rendered Content in Python?

Cara Mengikis Kandungan Dinamik Dijana oleh JavaScript dalam Python

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!

Kenyataan:
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