【发布时间】:2011-08-02 05:29:39
【问题描述】:
首先,这不是关于如何抓取网站的问题。我完全了解可用于抓取的工具(css_parser、nokogiri 等。我正在使用 Ruby 进行抓取)。
这更像是一个关于从网站地址开始抓取网站徽标的最佳解决方案的总体问题。
我已经开始创建的两个解决方案是:
- 使用 Google AJAX API 进行图像搜索,搜索范围为相关站点,查询“logo”,并获取第一个结果。我会说,大约 30% 的时间会得到徽标。
- 上述问题在于,Google 似乎并不真正关心 CSS 图像替换徽标(即,图像替换为徽标的 H1 文本)。我暂时想出的解决方案是拉下所有 CSS 文件,扫描 url() 声明,然后在文件名中查找单词 header 或 logo。
解决方案二是有问题的,因为所有为网站编写 CSS 的人都有许多特质。他们在文件名中使用 Header 而不是 logo。有时文件名是随机的,没有说明徽标。其他时候,它只是错误的图像。
我意识到我可能能够通过某种机器学习来做某事,但我的客户有点截止日期,并且很快需要一些相当有能力的东西。
综上所述,如果有人对此有任何“开箱即用”的想法,我很想听听。如果我能创建一个运行良好的解决方案,我计划为任何其他感兴趣的方开源该库:)
谢谢!
【问题讨论】:
-
另外,我想补充一点,我这样做是为了减少我客户的手动图像上传过程。我们将提取数千条记录,我希望他们能够尽可能少地手动上传。谢谢!
-
如何做一些事情,比如将您建议的搜索之一与以下内容结合起来:谷歌搜索仅限于根 url,以识别网站上的多个页面。扫描两页或三页图像,找到所有搜索页共有的图像。如果所有页面都有多个结果,您需要制定某种选择标准,可能是尺寸,可能是页面内的顺序......但我认为这将是一些反复试验才能看到什么有效最好的。然后你可以比较这两种方法的结果,如果他们同意,也许是徽标...
-
这似乎是一个很好的解决方案!我对 SO 很陌生(虽然是长期潜伏者),但为什么不将其发布为答案呢?
-
这个问题和Ruby无关
-
已修改。感谢您直率但真实的评论。
标签: screen-scraping html-parsing