You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python Requests无法解析JavaScript渲染网页的问题求助

解决动态页面HTML获取不完整的问题

你遇到的问题是因为微软应用商店的这个页面属于动态渲染页面:服务器返回的初始HTML仅包含页面基础框架,大部分内容是通过浏览器端的JavaScript动态加载生成的。而requests库只能获取服务器返回的静态初始HTML,无法执行JavaScript代码,所以保存的文件里body内容不完整。

以下是两种可行的解决方案:

方案一:使用Selenium模拟浏览器加载

Selenium可以模拟真实浏览器的行为,执行页面中的JavaScript,从而获取完整的渲染后HTML。

实现代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time

def get_full_html(url):
    # 配置Chrome无头模式(不弹出浏览器窗口)
    chrome_options = Options()
    chrome_options.add_argument("--headless=new")
    chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")
    
    # 初始化浏览器驱动
    driver = webdriver.Chrome(options=chrome_options)
    driver.get(url)
    
    # 等待页面内容加载完成(可根据实际情况调整等待时间)
    time.sleep(5)
    
    # 获取完整渲染后的页面HTML
    full_html = driver.page_source
    
    # 保存到文件
    with open("full_index.html", "w", encoding="utf-8") as file:
        file.write(full_html)
    
    # 关闭浏览器
    driver.quit()

get_full_html("https://apps.microsoft.com/store/category/Business")

前置准备

  1. 安装Selenium:pip install selenium
  2. 下载对应版本的ChromeDriver,将其放入系统环境变量路径中,或者在初始化webdriver.Chrome时通过executable_path参数指定驱动文件路径。

方案二:使用Playwright获取完整页面

Playwright是更现代的浏览器自动化工具,自带驱动管理,无需手动下载浏览器驱动,使用更便捷。

实现代码

from playwright.sync_api import sync_playwright

def get_full_html(url):
    with sync_playwright() as p:
        # 启动无头模式的Chromium浏览器
        browser = p.chromium.launch(headless=True)
        page = browser.new_page(user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")
        
        # 访问页面,等待网络空闲确保内容加载完成
        page.goto(url, wait_until="networkidle")
        
        # 获取完整页面HTML
        full_html = page.content()
        
        # 保存到文件
        with open("full_index.html", "w", encoding="utf-8") as file:
            file.write(full_html)
        
        # 关闭浏览器
        browser.close()

get_full_html("https://apps.microsoft.com/store/category/Business")

前置准备

  1. 安装Playwright:pip install playwright
  2. 安装Chromium驱动:playwright install chromium

额外优化方案(更高效)

如果不需要完整HTML,只是想获取页面中的应用数据,可以通过浏览器开发者工具抓包,找到页面加载数据的API接口,直接用requests请求接口获取结构化的JSON数据,这种方式比解析HTML效率更高,也更稳定。比如打开浏览器的「开发者工具」-「网络」面板,筛选XHR/Fetch请求,找到加载应用列表的接口,复制请求参数后用requests调用即可。

内容的提问来源于stack exchange,提问作者Yauheni Filipchanka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 17:01:21