Ruby中如何提取动态HTML标签文本并赋值给变量
结论
该需求完全可以实现。处理HTML内容不建议手写正则匹配,使用Ruby生态通用的HTML解析库Nokogiri即可稳定完成文本提取。
操作步骤
- 安装Nokogiri依赖,终端执行命令:
gem install nokogiri
如果是基于Bundler管理依赖的项目(比如Rails项目),直接在Gemfile中添加gem 'nokogiri'后执行bundle install即可。 - 编写解析逻辑,通过CSS选择器定位目标下拉框下的所有option标签,提取文本后过滤掉默认提示项,赋值给变量:
require 'nokogiri' # 替换为你实际需要解析的HTML内容 target_html = <<~HTML <select id="recentsearchs" name="searchname"> <option value="select recent item">select recent item </option> <option>Apple</option> <option>Orange</option> <option>Banana</option> </select> HTML doc = Nokogiri::HTML(target_html) # 提取结果赋值给变量,最终值为 ["Apple", "Orange", "Banana"] recent_search_list = doc.css('#recentsearchs option').map { |opt| opt.text.strip }.reject { |t| t == "select recent item" }
不推荐的方案
如果只是临时处理结构完全固定的HTML片段,也可以用正则快速匹配拿到结果,但这种方式鲁棒性极差,只要option标签新增属性、出现嵌套标签或者格式有微调就会匹配失败,禁止在生产环境使用:
# 仅适配当前给出的固定HTML结构,无容错能力 recent_search_list = target_html.scan(/<option>([A-Za-z]+)<\/option>/).flatten
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

