溫馨提示×

python js爬蟲如何處理動態加載JSON

小樊
101
2024-12-12 03:56:49
欄目: 編程語言

要處理動態加載的 JSON 數據,您可以使用 Python 的 requests 庫來獲取網頁內容,然后使用 JavaScript 引擎(如 Selenium 或 Pyppeteer)來執行 JavaScript 代碼并獲取動態加載的數據。以下是兩種方法的示例:

方法一:使用 Selenium

  1. 安裝 Selenium 庫:
pip install selenium
  1. 下載瀏覽器驅動(以 Chrome 為例):

    訪問 https://sites.google.com/a/chromium.org/chromedriver/downloads,下載與您的 Chrome 瀏覽器版本相匹配的驅動程序,并將其解壓到某個目錄。

  2. 編寫 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

  1. 安裝 Pyppeteer 庫:
pip install pyppeteer
  1. 編寫 Python 代碼:
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 選擇器。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女