从网页中提取背景图像/解析HTML + CSS

时间:2012-04-18 20:56:49

标签: html ruby-on-rails css screen-scraping web-scraping

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

我希望为每个页面提取一些代表性图片(当您共享链接时,如 Facebook )。

现在我首先使用gem opengraph来解析og:image元标记,然后使用Nokogiri来解析网页内容并检索所有<img>标记{{ 1}}属性。这给出了很好的结果(除了一些装饰图像,所以我按尺寸过滤结果......)。

-

现在我想进一步解析css src属性:网站徽标通常显示为background-image<h1>代码的背景。

我考虑以下过程:

  • 使用正则表达式(类似<a>)解析HTML文档以查找内联CSS

  • 使用Nokogiri检索CSS样式表网址并使用相同的正则表达式解析这些表格

...根据文档网址确定网址。

-

我的问题是:

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

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

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

1 个答案:

答案 0 :(得分:1)

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

除非您只是尝试提取徽标,否则我认为这不值得。在这种情况下,我会限制包含单词“logo”的类名/ ids /路径上的匹配。

如果你想从一个页面中提取“代表性图像”,我会像你一样解析图像标签,然后按照How do I take screenshots of web pages using ruby and a unix server?

生成(并裁剪)页面的屏幕截图

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

就图书馆而言,我非常确定nokogiri是最好的东西。