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

使用Ruby+XPath抓取图片src属性无返回结果求助

解决Ruby XPath提取图片src属性的问题

看起来你是想从这段HTML里提取<img>标签的src属性,但现有代码的定位方向和目标不对,所以没得到预期结果。我来帮你梳理下问题和解决方案:

首先分析你现有代码的问题

  1. 第一行tr.xpath("./td[1]//a[img]").text是在获取<a>标签内的文本内容(也就是示例里的1231233),和你要的图片src完全无关。
  2. 第二行tr.xpath("./td[1]//a[img]/@href").extract是在提取<a>标签的href属性,同样不是目标的图片src。
  3. 另外如果没有返回结果,也可能是你的tr节点没有正确定位到(比如HTML里这个<td>的父节点不是你选中的tr,或者td[1]的索引不对)。

正确的解决方案(基于Nokogiri,Ruby常用HTML解析库)

假设你已经用Nokogiri加载了HTML文档,先确保父节点定位正确,然后调整XPath直接指向<img>的src属性:

场景1:你已经正确获取到包含该<td>的tr节点

# 提取单个img的src属性文本
img_src = tr.xpath('./td[1]//img/@src').text
puts img_src # 输出: gwt/placeholder_icon_24.png

# 如果可能有多个img,用extract返回数组
img_srcs = tr.xpath('./td[1]//img/@src').extract
puts img_srcs # 输出: ["gwt/placeholder_icon_24.png"]

场景2:你直接处理这段<td>的HTML片段

如果你的HTML只有这段<td>内容,不需要通过tr定位,可以直接从<td>开始:

require 'nokogiri'
html = '<td class="E6AEBFB-Zc-a E6AEBFB-Zc-s E6AEBFB-Zc-d"><div style="outline-style:none;" __gwt_cell="cell-gwt-uid-338"><a aria-label="Application 1231233" href="#AppDashboardPlace:p=tmp.13910559381666913670.1525434997761&amp;amp;appid=4973853232983868726" data-column="TITLE"><img src="gwt/placeholder_icon_24.png" role="presentation"><div> <div>1231233</div> <div></div> </div> </a></div></td>'
doc = Nokogiri::HTML(html)

td = doc.at_xpath('//td')
img_src = td.xpath('.//img/@src').text
puts img_src

额外提示

  • 如果你不确定节点是否存在,可以先打印定位到的节点内容,确认路径是否正确:比如puts tr.xpath('./td[1]').to_html,看看是否能输出目标<td>的HTML。
  • XPath里的./表示当前节点下,//表示后代节点,@src表示提取该属性的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:03:56