Web.Contents、Web.BrowserContents 和 Web.Page 有何区别?
-
Web.Contents用于检索不需要通过浏览器访问的 Web 内容,例如 CSV 文件、JSON API 结果等。 - 它支持各种身份验证选项。
- 它可以在云环境中(如 Power Query Online)中使用,而无需网关。
-
Web.Page是用于检索需要通过浏览器(如 HTML 页面)访问的 Web 内容的旧函数。 - 它基于 Internet Explorer 构建。 由于此要求,它在 UI 中将被替换为
Web.BrowserContents。 但是,Web.Page在引擎级别继续可用以实现向后兼容性。 - 在云环境中使用它需要一个网关,例如在 Power Query Online 中。
-
Web.BrowserContents是用于检索需要通过浏览器(如 HTML 页面)访问的 Web 内容的更新函数。 - 在 UI 中,
Web.BrowserContents正在替换Web.Page,因为Web.Page基于 Internet Explorer。 -
Web.BrowserContents最初是基于 Chromium 构建的,但它现在使用 Microsoft Edge 的 WebView2 控件。 - 在云环境中使用它需要一个网关,例如在 Power Query Online 中。
下表汇总了差异。
| Web.Contents | Web.Page | Web.BrowserContents | |
|---|---|---|---|
| 非浏览器内容(.txt/.csv 文件、JSON 等) | x | ||
| 浏览器内容(HTML) | x | x | |
| 支持的身份验证类型 | 匿名 Windows操作系统 基本 网络应用程序接口 组织帐户 |
匿名 Windows (仅当前用户的凭据) 网络应用程序接口 |
匿名 Windows操作系统 基本 网络应用程序接口 |
| 需要云主机中的网关 | N | Y | Y |
| 当前由 | 所有主机 | Excel 和 Power Query Online | Power BI Desktop |
| 基于 | .NET | Internet Explorer (互联网浏览器) | Microsoft Edge 的 WebView2 控件 |
注释
仅在使用 Web.Contents 时才能匿名发出 POST 请求。
Web 视图中的“此浏览器不再受支持”警告
导入网页时,可以使用 Power Query 导航器对话框中的 “Web 视图 ”选项卡查看页面预览。 此预览有时可能会显示警告,例如“不再支持此浏览器”。出现此警告时,通常是因为 Web 视图当前使用 Internet Explorer 呈现 Web 视图预览,而某些网站不再支持该预览。 但是,此警告仅影响 Web 视图,不会影响 Web 连接器本身。 只要使用基于 Web.Contents 或 Web.BrowserContents (而不是 Web.Page)的连接器,就可以安全地忽略此类警告。 有关不同 Web 连接器及其基础技术的详细信息,请转到 Web.Contents、Web.BrowserContents 和 Web.Page 之间的区别是什么?
处理动态网页
动态加载其内容的网页可能需要特殊处理。 如果发现 Web 查询中出现零星错误,则可能尝试访问动态网页。 此类错误的一个常见示例是:
- 刷新连接到站点的查询。
- 你看到错误(例如,找不到表的列“Foo”)。
- 再次刷新查询。
- 不会发生错误。
此类问题通常是由于时间问题。 动态加载其内容的页面有时可能不一致,因为浏览器考虑加载完成后,内容可能会更改。 有时,Web 连接器会在加载所有动态内容后下载 HTML。 其他时候,更改在下载 HTML 时仍在进行中,从而导致零星错误。
解决方案是使用 WaitForWeb.BrowserContents 的选项,该选项指示选择器或应在下载 HTML 之前等待的时间长度。
如何判断页面是否是动态的? 通常很简单。 在浏览器中打开页面并监视页面的加载。 如果内容立即显示,则它是常规 HTML 页面。 如果它随时间而动态显示或更改,则它是一个动态页面。
将网关与 Web 连接器配合使用
当发布到云服务(例如 Power BI 语义模型、数据流或 Power Apps 数据流)时, Web.BrowserContents 和 Web.Page 都需要使用本地数据网关。 (目前,Dynamics 365 Customer Insights 不支持使用网关。
如果使用 Web.Page 并收到 Please specify how to connect 错误,请确保已在托管本地数据网关的计算机上安装 Internet Explorer 10 或更高版本。
如果您使用 Web.BrowserContents 并收到 We were unable to find the WebView2 runtime 错误,请确保已在托管本地数据网关的计算机上安装 WebView2 运行时。 错误消息应提供指向 WebView2 运行时安装程序的链接。 如果已安装运行时但仍看到错误,请确保网关服务帐户(通常是 PBIEgwService)有权访问 WebView2 运行时的安装位置(例如 C:\Program Files (x86)\Microsoft\EdgeWebView)。
使用 Web.BrowserContents 时,我们遇到了“初始化 Web 浏览器时的错误”错误。
如果调用 Web.BrowserContents 的进程在提升模式下运行,则可能会出现此错误,因为 WebView2 当前不支持使用管理员权限运行。
使用 Web.Page 而不是 Web.BrowserContents
如果需要使用 Web.Page 而不是 Web.BrowserContents使用,仍可以手动使用 Web.Page。
在 Power BI Desktop 中,可以通过清除Web.Page”选项来使用较旧的函数:
在“ 文件 ”选项卡下,选择“ 选项”和“设置>选项”。
在“ 全局 ”部分中,选择 “Power Query 编辑器”。
清除 “启用 Web 表推理 ”选项,然后选择“ 确定”。
重启 Power BI Desktop。
注释
目前,您无法在针对 Power BI 报表服务器优化的 Power BI Desktop 中关闭
Web.BrowserContents的使用。
还可以从 Excel 获取查询Web.Page的副本。 从 Excel 复制代码:
- 从“数据”选项卡中选择“从 Web”。
- 在“ 从 Web ”对话框中输入地址,然后选择“ 确定”。
- 在 导航器中,选择要加载的数据,然后选择“ 转换数据”。
- 在 Power Query 的 “开始 ”选项卡中,选择 “高级编辑器”。
- 在 高级编辑器中,复制 M 公式。
- 在使用
Web.BrowserContents的应用中,选择“空白查询” 连接器。 - 如果要复制到 Power BI Desktop:
- 在“ 开始 ”选项卡中,选择 “高级编辑器”。
- 将复制
Web.Page的查询粘贴到编辑器中,然后选择“ 完成”。
- 如果要复制到 Power Query Online:
- 在 空白查询中,将复制
Web.Page的查询粘贴到空白查询中。 - 选择要使用的本地数据网关。
- 选择“下一步”。
- 在 空白查询中,将复制
还可以在空白查询中手动输入以下代码。 确保输入要加载的网页的地址。
let
Source = Web.Page(Web.Contents("<your address here>")),
Navigation = Source{0}[Data]
in
Navigation
捕获网络请求和证书吊销
我们加强了 Web 连接的安全性,以保护你的数据。 但是,此更新意味着某些方案(如使用 Fiddler 捕获 Web 请求)默认不再有效。 若要启用这些场景,
打开 Power BI Desktop。
在“ 文件 ”选项卡下,选择“ 选项”和“设置>选项”。
在 “选项”中的 “全局>安全性”下,取消选中 “启用证书吊销检查”。
选择“确定”。
重启 Power BI Desktop。
重要
取消选中 “启用证书吊销”检查 会使 Web 连接不那么安全。
若要在组策略中设置此方案,请使用注册表路径“Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Power BI Desktop”下的“DisableCertificateRevocationCheck”键。 将“DisableCertificateRevocationCheck”设置为 0 始终启用检查(阻止 Fiddler 和类似软件正常工作),并将“DisableCertificateRevocationCheck”设置为 1 始终禁用检查(启用 Fiddler 和类似软件)。
更改身份验证方法
在某些情况下,可能需要更改用于访问特定网站的身份验证方法。 如果需要此更改,请转到 “更改身份验证方法”。
对任意服务进行身份验证
某些服务支持开箱即用的 OAuth/Microsoft Entra ID 身份验证功能,用于 Web 连接器的身份验证。 但是,在大多数情况下,此身份验证不起作用。
尝试进行身份验证时,如果发生以下错误:
We were unable to connect because this credential type isn’t supported for this resource. Please choose another credential type.
请联系服务所有者。 他们要么需要更改身份验证配置,要么生成自定义连接器。
Web 连接器使用 HTTP 1.1 进行通信
Power Query Web 连接器使用 HTTP 1.1 与数据源通信。 如果数据源希望使用 HTTP 1.0 进行通信,可能会收到错误,例如 500 Internal Server Error。
无法将 Power Query 切换为使用 HTTP 1.0。 为了避免在初始调用可能失败(例如,由于缺少权限)的情况下传递可能较大的有效负载,当存在正文时,Power Query 始终发送Expect:100-continue。 目前,无法更改此行为。
连接到 Microsoft Graph
Power Query 当前不支持连接到 Microsoft Graph REST API。 详细信息: Power Query 中缺少对 Microsoft Graph 的支持