我正在建立一个共享网站,允许与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,...)并限制结果数量。
答案 0 :(得分:1)
当您解析网站的CSS时,您要返回的任何图像都将与用户界面(精灵,背景)相关联,而不是与页面的实际内容相关。
除非您只是尝试提取徽标,否则我认为这不值得。在这种情况下,我会限制包含单词“logo”的类名/ ids /路径上的匹配。
如果你想从一个页面中提取“代表性图像”,我会像你一样解析图像标签,然后按照How do I take screenshots of web pages using ruby and a unix server?
生成(并裁剪)页面的屏幕截图您如何处理原始HTML源代码中没有的图像?
就图书馆而言,我非常确定nokogiri是最好的东西。