3

我正在构建一个共享站点,它允许与 Ruby on Rails共享网页链接。

我想为每个页面提取一些有代表性的图像(就像在Facebook 上分享链接时一样)。

现在我首先使用gem opengraph来解析og:imagemeta 标签,然后我使用Nokogiri来解析页面内容并检索所有<img>标签src属性。这给出了很好的结果(除了一些装饰图像,所以我按大小过滤结果......)。

--

现在我想进一步解析 cssbackground-image属性:网站徽标通常显示为 a<h1><a>标签的背景。

我想到了以下过程:

  • 使用正则表达式(类似/background(-image)?:.../)解析 HTML 文档以查找内联 CSS

  • 使用 Nokogiri 检索 CSS 样式表 URL,并使用相同的正则表达式解析这些表单

...并根据文档 URL 对 URL 进行绝对化。

--

我的问题是:

  • 你认为有更好的选择吗?

  • 是否有某种可以提高流程性能的库?

    例如,如果我可以构建一个 HTML+CSS 的统一视图,它允许我通过 DOM 访问 CSS 属性,那么我只能访问预选的 HTML 元素(h1、a、...)的背景图像和限制结果的数量。

4

1 回答 1

1

当您解析网站的 CSS 时,您要返回的任何图像都将与用户界面(精灵、背景)相关,而不是与页面的实际内容相关。

除非您只是想提取徽标,否则我认为这不值得您花时间。在那种情况下,我会限制匹配包含单词“logo”的类名/ids/paths。

如果您想从页面中提取“代表性图像”,我会像您一样解析图像标签,然后生成(并裁剪)页面的屏幕截图:如何使用 ruby​​ 和 a 截取网页截图Unix服务器?

您如何处理不在原始 HTML 源代码中的图像?

在图书馆方面,我很确定 nokogiri 是最好的东西。

于 2012-04-20T13:49:06.367 回答