是否可以使用 Nokogiri 解析样式表?

2023-12-23

我花了两个小时在谷歌上搜索这个问题,但找不到任何好的答案,所以让我们看看人类是否可以击败谷歌计算机。

我想用 Ruby 解析样式表,以便可以将这些样式应用到文档中的元素(使样式内联)。所以,我想采取类似的东西

<style>
.mystyle {
  color:white;
}
</style>

并能够将其提取到某种 Nokogiri 对象中。

Nokogiri 类“CSS::Parser”(http://nokogiri.rubyforge.org/nokogiri/Nokogiri/CSS/Parser.html http://nokogiri.rubyforge.org/nokogiri/Nokogiri/CSS/Parser.html)当然有一个很有前途的名字,但我找不到任何关于它是什么或它如何工作的文档,所以我不知道它是否可以做我在这里追求的事情。

我的最终目标是能够编写如下代码:

a_web_page = Nokogiri::HTML(html_page_as_string)
parsed_styles = Nokogiri::CSS.parse(html_page_as_string)
parsed_styles.each do |style| 
  existing_inlined_style = a_web_page.css(style.declaration) || ''
  a_web_page.css(style.declaration)['css'] = existing_inlined_style + style.definition
end

这将从样式表中提取样式并将它们全部作为内联样式添加到我的文档中。


Nokogiri 无法解析 CSS 样式表。

The CSS::Parser你遇到的解析 CSS表达式。每当您通过 CSS 选择器而不是 XPath 遍历 HTML 树时,都会使用它(这是一个很酷的功能 http://nokogiri.org/Nokogiri/XML/Node.html#M000128野科切)。

有一颗红宝石CSS解析器 http://github.com/alexdunae/css_parser, 尽管。您可以将它与 Nokogiri 一起使用来实现您想要的。

require "nokogiri"
require "css_parser"

html = Nokogiri::HTML(html_string)

css = CssParser::Parser.new
css.add_block!(css_string)

css.each_selector do |selector, declarations, specificity|
  html.css(selector).each do |element|
    style = element.attributes["style"]&.value || ""
    element.set_attribute('style', [style, declarations].compact.join(" "))
  end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以使用 Nokogiri 解析样式表? 的相关文章

  • 如何检查字符串是否为有效日期

    我有一个字符串 31 02 2010 并想检查它是否是有效日期 最好的方法是什么 我需要一个方法 如果字符串是有效日期 则返回 true 如果不是 则返回 false require date begin Date parse 31 02
  • Cucumber / Savon 省略或删除日志输出

    在运行黄瓜测试时 我得到 除了测试结果之外 许多与调试 日志相关的输出 格式如下 D 2013 03 06T12 21 38 911829 49031 DEBUG SOAP request D 2013 03 06T12 21 38 911
  • 如何设置菜单按钮和菜单项的样式

    我尝试更改菜单按钮中的样式 我可以更改菜单按钮样式 但不能更改其菜单项 无论我尝试什么 菜单按钮内的菜单项都保持不变 menu button fx background color black menu button label fx ba
  • Gem 在 irb 中可用,但在 Rails 控制台中不可用

    我正在尝试在我的 Rails 项目中使用 RedCloth gem 当我使用irb我可以加载宝石 require rubygems require RedCloth 它工作正常 但是当我在 Rails 控制台中尝试相同的操作时 我收到一条错
  • 避免响应式页面的重复内容

    我目前正在做一个涉及响应式设计的项目 整个布局应该使用HTML和CSS来实现 我知道可以使用 java 脚本将内容从一个列布局移动到另一列布局 而无需复制内容 但是使用 HTML 和 CSS 是否可以实现相同的效果 以下面的例子为例 它会在
  • 如何在没有@import的情况下减少@import?

    我用的较少 从 Google PageSpeed 我了解到 使用 importCSS 文件中的内容会影响网站速度 所以我想排除任何 import来自我的 CSS 的东西 我有 2 个不同的样式表reset css and rebuild c
  • 查找 Rails 应用程序中未使用的代码

    如何查找正在运行和未运行的代码生产中 该应用程序经过充分测试 但还有很多测试unused代码 因此 他们在运行测试时得到覆盖 我想重构并清理这个烂摊子 它一直在浪费我的时间 我有很多后台工作 这就是为什么我希望生产环境来指导我 在 Hero
  • 更改文本输入标签中文本的大小?

    我有一个很大的文本输入框 但我无法更改字体大小
  • 如何仅在最后一个
  • 处给出透明六边形角度?
  • 我必须制作这样的菜单 替代文本 http shup com Shup 330421 1104422739 My Desktop png http shup com Shup 330421 1104422739 My Desktop png
  • “heroku”命令存在于以下 Ruby 版本中:

    我在使用 heroku 工具带时遇到了重大问题 我正在使用 cedar 14 堆栈 当我尝试使用不是的 ruby 版本时ruby 2 0 0 dev我收到这个错误 rbenv heroku command not found The her
  • 为什么元素上的负底部边距会降低该元素父元素的高度?

    这可能是由于边距折叠造成的 我知道边距折叠 至少知道它如何影响相邻元素 但我不明白当涉及负边距时它如何在嵌套元素上工作 例如 在此标记和随附的 CSS 中 Markup div class parent div class child Ch
  • 将 2 个 Div 垂直居中另一个 Div

    我有 2 个 div 我想将它们垂直居中在另一个 div 内 目前我有 http jsfiddle net 5vpA3 1 http jsfiddle net 5vpA3 1 现在我明白这里发生了什么 但我希望左侧 div 在该容器内垂直对
  • Rails: :inverse_of 和关联扩展

    我有以下设置 class Player lt ActiveRecord Base has many cards inverse of gt player do def in hand find all by location hand en
  • 禁用单一样式的 CSS 转换?

    为单个样式启用 CSS 过渡非常容易 但是是否可以为单个样式禁用它们 单一样式过渡的常用方法是 div transition opacity 0 5s 但我想做的是设置一个全局转换 然后为单个属性禁用它 也许是这样的 div transit
  • 更改链接悬停时的正文背景颜色

    当鼠标悬停在页面上时如何更改页面背景a 我正在寻找仅 css 的解决方案 我知道你可以通过 css 到达子元素 但我不知道如何 是否可以到达主体 看看这个DEMO http jsfiddle net bhavuksuthar bjsvhze
  • 如何在光标下的所有元素上调用 mouseover?

    我有一个网络应用程序 每次单击时都会创建一个点 见下文 当我将鼠标悬停在一堆点上时 我希望光标下的每个点都会触发 mouseover 或 mouseenter 事件 然而 只有一个事件被触发 即堆栈 顶部 的点的事件 当鼠标移动到一堆多个点
  • 父>子CSS选择器

    我经常使用这个CSS选择器parent gt child 我的设计在 Mozilla 和 Opera 中看起来不错 但在 IE 中 就很糟糕了 我知道 gt 在 IE 中无法识别 但是 IE 中的替代方案是什么 一种替代方法是使用通用选择器
  • 使用 Carrierwave 上传到 S3 时获取 mp3 持续时间

    我正在编写一个应用程序 它基本上是一个音乐平台 我想通过其元数据获取 mp3 的持续时间 并将其保存在表中 然后再将其上传到 S3 我使用载波和雾宝石的组合来上传 提取 mp3 元数据以保存到数据库的推荐方法是什么 有一个用于此类操作的 g
  • 选择的 xpath 父属性

    xml文档的语法
  • jQuery 覆盖默认验证错误消息显示(Css)弹出/工具提示等

    我试图用 div 而不是标签来覆盖默认的错误消息标签 我看过这个帖子 https stackoverflow com questions 309574 jquery validation how to not display errors

随机推荐

  • 有没有办法在 r 中自动重新安装软件包及其依赖项?

    所以我在Rstudio上使用installR将R更新到版本4 0 0 并将我的包文件复制到R中的库文件中 目录是 C Users Ibrahim Documents R R 4 0 0 library 每当我调用一个包时 例如 tidyte
  • 在 Linux 命令行中使用低功耗蓝牙

    我正在研究在 Linux 上使用蓝牙低功耗调制解调器 我正在使用命令行选项 即hcitool 我可以使用以下命令找到设备 hcitool scan 它对我来说工作正常 我也可以使用以下方式广播我的设备 sudo hciconfig hci0
  • RecyclerView 中最后一个子元素的边距/填充

    我试图在最后一行添加填充 边距底部 并在第一行添加填充 边距顶部 我不能在项目 xml 中执行此操作 因为它会影响我所有的孩子 我的 RecyclerView 适配器中有标题和子项 所以我无法使用 android padding 4dp a
  • Django REST Framework 序列化速度极慢

    我使用的是 Python 2 7 和 Django 1 7 1 以及 django rest 框架 我有一个 API 它返回一些从数据库中获取的特定值 它使用如下所示的自定义序列化器 class InventarioSerializer s
  • 使用 MLCP 复制数据时出现异常

    我正在尝试使用 MLCP 将 100 万个文档从一个数据库复制到另一个数据库 但出现以下异常 19 08 30 11 48 08 ERROR contentpump DatabaseContentReader RuntimeExceptio
  • 我如何搜索文件并将它们压缩到一个 zip 文件中

    我尝试使用以下命令搜索文件并压缩它们 find regexpression exec zip 但是它不起作用 我怎样才能做到这一点 您使用的命令将分别对每个文件运行 zip 请尝试以下操作 find name
  • IIS 站点和 nant/nantcontrib?

    是否可以使用 NAnt 管理 IIS Web 应用程序 例如停止或启动它 Nant 具有 servicecontroller 任务 您可以使用它仅停止 启动 Web 服务器或整个 IIS 我通常使用它来停止 启动 Web 服务器
  • 如何在 php 中正确为我的 tbl_item 制作下拉列表菜单

    我的下拉列表菜单遇到问题 它不断出现 wamp 错误 我的下拉列表菜单将来自 tbl 项目的项目名称 postgres DB funcContainer php 页面 function DropdownListMenu label name
  • 扩展 MIDL 接口和 COM 对象设计

    我读过有关各种 COM 设计模式的详细信息COM 程序员的食谱 http msdn microsoft com en us library ms809982 aspx以及一些相关的 SO 线程 特别是讨论组合与多重继承的线程 https s
  • 我的插件未正确更新(upgrader_process_complete 问题)

    我有安装了我的插件的用户 我们将其称为 v6 我的插件的 V6 版本没有注册处理程序upgrader process complete 在我的新版本中 我有upgrader process complete注册对我的数据库表进行一些升级 然
  • 为什么 @FunctionalInterface 没有在 JDK 中符合条件的所有接口上使用?

    Java 8 为我们提供了许多有趣的方法来使用函数式接口以及新的注释 功能接口 http docs oracle com javase 8 docs api java lang FunctionalInterface html 它的工作是告
  • 使用 Postgres 将邻接列表转为 JSON 图

    我有以下标签表架构 CREATE TABLE tags id integer NOT NULL name character varying 255 NOT NULL parent id integer 我需要构建一个查询来返回以下结构 为
  • 获取 CFNetwork SSLHandshake 失败 (-9806) 错误

    我正在尝试使用调用我的网址 NSDictionary landingDetails appDelegate landingPage NSString devinf UIDevice currentDevice systemVersion N
  • Cassandra CQL3 导入 CSV

    背景 我创建了一个名为AvailableDomains 的架构 简单策略 1 个节点 在该键空间中 我创建了 1 个表 列族 称为包含列 id urn 时间戳 标志 的域 除时间戳之外的所有类型文本都是时间戳类型 我启动cassandra
  • 视频元素上出现不需要的边框[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • 如何用webpack+react渲染图像?

    我对 React 和 Webpack 还很陌生 我遇到了这个我不明白的奇怪问题 问题 当我检查图像时 上面是我看到的 显然没有显示我的图像 我正在使用文件加载器 我的结构 网页包 const path require path const
  • R 中 KerasR LSTM 的数组转换

    为了在 KerasR 中使用 LSTM 我必须转换我的 NumericMatrix 335 x 1515 我想我在这里找到了解决方案https stats stackexchange com questions 274478 underst
  • rgl.snapshot() 不再有效

    我刚刚将 R 和 rgl 升级到以下版本 现在 rgl snapshot 不再起作用 它在以前的版本中有效 有没有解决的办法 R版本2 12 1 2010 12 16 rgl 版本 0 92 798 gt library rgl gt x
  • 从Dictionary中高效获取IReadOnlyDictionary

    public class Flea Animals var fleas new Dictionary
  • 是否可以使用 Nokogiri 解析样式表?

    我花了两个小时在谷歌上搜索这个问题 但找不到任何好的答案 所以让我们看看人类是否可以击败谷歌计算机 我想用 Ruby 解析样式表 以便可以将这些样式应用到文档中的元素 使样式内联 所以 我想采取类似的东西 并能够将其提取到某种 Nokogi