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

使用Power Query抓取PubChem时遭遇「需启用JavaScript」错误的解决咨询

Power BI访问PubChem时JS禁用提示问题的成因与解决办法

成因

  • PubChem反爬机制更新:平台调整了访问验证逻辑,现在要求访问环境必须能执行JavaScript才能返回正常内容,你之前用的Web.BrowserContents默认环境被识别为无JS支持或非真实浏览器。
  • Power BI浏览器模拟参数问题:Web.BrowserContents的默认配置可能未启用JS,或者模拟的浏览器特征(如User-Agent)被PubChem的检测机制拦截。
  • 局部节点/网络限制:你提到是局部问题,可能当前访问的PubChem服务器节点对JS检测更严格,或者所在网络的防火墙、代理干扰了JS环境的模拟。

可行解决办法

1. 调整Web.BrowserContents的JS与浏览器模拟设置

修改你的M代码,强制启用JS执行、增加页面加载等待时间,并模拟真实浏览器的User-Agent:

let
    Source = Web.BrowserContents("https://pubchem.ncbi.nlm.nih.gov/compound/311", [WaitFor=10, EnableJavaScript=true, UserAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"]),
    #"Extracted Table From Html" = Html.Table(Source, {{"Column1", "BODY"}}),
    Column1 = #"Extracted Table From Html"[Column1]{0}
in
    Column1
  • 说明:EnableJavaScript=true确保JS能正常执行,WaitFor=10给页面留足加载JS内容的时间,真实的User-Agent能降低被识别为爬虫的概率。

2. 改用PubChem官方API(推荐)

PubChem提供REST API接口,比网页抓取更稳定合规,完全避开JS检测问题。比如获取CID 311的化合物信息:

let
    Source = Json.Document(Web.Contents("https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/311/JSON")),
    CompoundInfo = Source{"PC_Compounds"}{0}
in
    CompoundInfo
  • 说明:API返回结构化的JSON数据,无需处理复杂的HTML,数据获取更高效,也符合平台的使用规范。

3. 排查网络环境

  • 切换网络环境(比如从办公网换为家用网络),排除防火墙或代理对JS模拟的干扰。
  • 清除Power BI的Web缓存:依次点击「文件」>「选项和设置」>「查询选项」>「数据加载」>「清除缓存」。

相关参考问题(翻译自Stack Overflow)

Selenium Chrome驱动程序在网页上执行JS脚本时存在不一致性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:15:40