要處理動態加載的 JSON 數據,您可以使用 Python 的 requests
庫來獲取網頁內容,然后使用 JavaScript 引擎(如 Selenium 或 Pyppeteer)來執行 JavaScript 代碼并獲取動態加載的數據。以下是兩種方法的示例:
方法一:使用 Selenium
pip install selenium
下載瀏覽器驅動(以 Chrome 為例):
訪問 https://sites.google.com/a/chromium.org/chromedriver/downloads,下載與您的 Chrome 瀏覽器版本相匹配的驅動程序,并將其解壓到某個目錄。
編寫 Python 代碼:
from selenium import webdriver
import json
# 設置 Chrome 驅動程序的路徑
chrome_driver_path = 'path/to/chromedriver'
# 創建一個 Chrome 瀏覽器實例
browser = webdriver.Chrome(executable_path=chrome_driver_path)
# 訪問目標網頁
url = 'https://example.com'
browser.get(url)
# 執行 JavaScript 代碼以獲取動態加載的 JSON 數據
json_data = browser.execute_script('return JSON.parse(document.querySelector("your-json-selector").textContent);')
# 關閉瀏覽器實例
browser.quit()
# 處理 JSON 數據
print(json.dumps(json_data, indent=2))
方法二:使用 Pyppeteer
pip install pyppeteer
import asyncio
import json
from pyppeteer import launch
async def main():
# 啟動一個 Chromium 無頭瀏覽器實例
browser = await launch()
page = await browser.newPage()
# 訪問目標網頁
url = 'https://example.com'
await page.goto(url)
# 執行 JavaScript 代碼以獲取動態加載的 JSON 數據
json_data = await page.evaluate('''() => {
const jsonElement = document.querySelector("your-json-selector");
return JSON.parse(jsonElement.textContent);
}''')
# 關閉瀏覽器實例
await browser.close()
# 處理 JSON 數據
print(json.dumps(json_data, indent=2))
# 運行異步任務
asyncio.run(main())
請將上述代碼中的 'your-json-selector'
替換為您要獲取的 JSON 數據所在的 HTML 元素的 CSS 選擇器。