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

如何使用Ruby爬取rubygems.org页面中input输入框的value属性值

问题原因

你代码的核心问题是误用了.text方法获取元素属性:input输入框的value值属于元素的自有属性,不是标签包裹的内部文本,因此直接调用.text只会返回空值。

修复方案

有两种常用的写法可以正确获取到value属性值:

方案1:Xpath直接提取属性节点

在xpath路径末尾加上/@value指定提取value属性,再调用.text拿到属性内容:

require "httparty"
require "nokogiri"

req = HTTParty.get("https://rubygems.org/gems/nokogiri")
parse = Nokogiri::HTML(req.body)
# 注意xpath末尾加/@value定位属性节点
val = parse.xpath("//*[@id='install_text']/@value").text
puts val # 输出 gem install nokogiri

方案2:先定位元素再调用属性获取方法

用更简洁的CSS选择器定位到input元素后,调用Nokogiri的attr方法直接读取value属性,可读性更高:

require "httparty"
require "nokogiri"

req = HTTParty.get("https://rubygems.org/gems/nokogiri")
parse = Nokogiri::HTML(req.body)
# at_css直接匹配单个id为install_text的元素
val = parse.at_css("#install_text").attr("value")
puts val # 输出 gem install nokogiri

补充说明

如果需要爬取不同gem的安装命令,只需要把请求URL中的nokogiri替换为对应gem的名称即可,也可以额外增加HTTP请求状态码判断逻辑,处理网络请求失败的异常场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:18:02