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

如何在PowerQuery中通过Html.Table提取img标签的src属性?

解决PowerQuery提取HTML中img标签src属性的问题

你之前尝试的img@src、url(img)不符合PowerQuery的语法规则——Html.Table的列选择器仅支持标准CSS选择器选取元素,无法直接提取属性。要获取src属性,需结合PowerQuery内置函数实现,以下是两种可行方案:

方案一:直接在Html.Table中扩展列定义

修改原查询,新增一列并通过函数逻辑提取src属性:

= Html.Table(Source, {
   {"Title", ".idea-heading"},
   {"Description", ".ng-binding.idea-desc"},
   {"Last updated", ".sr-only"},
   {"Status", ".state-icon + *"},
   {"Votes", ".ng-binding:nth-child(5)"},
   {"Idea categories", ".idea-category"},
   {"Image Src", each Html.AttributeValue(Html.Select(_, "img"), "src")}
}, [RowSelector="LI"])
  • each表示对当前行的DOM元素执行后续逻辑
  • Html.Select(_, "img")从当前行元素中选中目标img标签
  • Html.AttributeValue(元素, "src")提取该元素的src属性

如果单一行包含多个img标签,可改用Html.SelectAll获取所有标签,再按需处理(比如取第一个或合并所有src):

{"Image Srcs", each Text.Combine(List.Transform(Html.SelectAll(_, "img"), (img) => Html.AttributeValue(img, "src")), ", ")}

方案二:拆分步骤灵活处理

若DOM结构复杂,可先提取所有行元素,再逐行提取各字段及图片属性:

let
    Source = /* 你的原始HTML数据源 */,
    // 提取所有行元素
    Rows = Html.Select(Source, "LI"),
    // 遍历行元素,转换为表格记录
    ConvertToTable = Table.FromRecords(List.Transform(Rows, (row) => [
        Title = Html.Table(row, {{"", ".idea-heading"}}){0}[Column1],
        Description = Html.Table(row, {{"", ".ng-binding.idea-desc"}}){0}[Column1],
        LastUpdated = Html.Table(row, {{"", ".sr-only"}}){0}[Column1],
        Status = Html.Table(row, {{"", ".state-icon + *"}}){0}[Column1],
        Votes = Html.Table(row, {{"", ".ng-binding:nth-child(5)"}}){0}[Column1],
        IdeaCategories = Html.Table(row, {{"", ".idea-category"}}){0}[Column1],
        ImageSrc = Html.AttributeValue(Html.Select(row, "img"), "src")
    ]))
in
    ConvertToTable

内容的提问来源于stack exchange,提问作者Hauke P.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 17:55:09