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

使用BeautifulSoup爬取React页面提示需启用JavaScript如何解决

问题原因

React 属于客户端渲染(CSR)框架,服务端返回的初始 HTML 仅包含You need to enable Javascript to run this app的占位提示,完整页面DOM需要等浏览器端JS执行、接口请求完成后才会渲染生成。你当前的代码在调用browser.get()后立刻获取页面源码,此时页面JS还未执行完成,自然只能拿到未渲染的初始内容。

可行解决方案
  • 方案1:给Selenium添加等待逻辑,等页面渲染完成再提取源码
    你的原有代码存在两个问题:一是没有等待JS执行完成,二是chrome_options参数在新版Selenium中已弃用,修改后的参考代码如下:
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from bs4 import BeautifulSoup
    
    options = webdriver.ChromeOptions()
    # 去除自动化特征,避免被网站反爬识别
    options.add_argument("--disable-blink-features=AutomationControlled")
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option("useAutomationExtension", False)
    # 可选:模拟正常浏览器UA
    options.add_argument("user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36")
    
    browser = webdriver.Chrome(options=options)
    browser.get('替换为你的目标页面地址')
    
    # 显式等待,直到页面核心元素加载完成,最多等10秒
    # 这里的选择器替换为你目标页面实际存在的核心元素选择器,比如React根节点一般为id=root
    wait = WebDriverWait(browser, 10)
    wait.until(EC.presence_of_element_located((By.ID, 'root')))
    
    soup = BeautifulSoup(browser.page_source, "html.parser")
    print(soup.prettify())
    # 用完记得关闭浏览器
    browser.quit()
    
  • 方案2:使用requests_html的JS渲染功能
    你之前用requests_html没有拿到渲染后内容,大概率是没有调用render()方法触发JS执行,参考代码如下:
    from requests_html import HTMLSession
    
    session = HTMLSession()
    r = session.get('替换为你的目标页面地址')
    # 触发JS渲染,默认会等待加载完成,可通过sleep参数设置额外等待时间
    # 第一次运行时会自动下载适配的chromium内核,等待完成即可
    r.html.render(sleep=2)
    print(r.html.html)
    
  • 额外说明:requests.get本身不支持JS执行,只能拿到服务端返回的原始静态HTML,所以用来爬React这类客户端渲染的页面天生就会拿到JS未启用的提示,不适合这类场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:15:01