如何从网站上刮取徽标?

Kei*_*son 5 screen-scraping html-parsing

首先,这不是关于如何刮网站的问题.我完全清楚可以使用的工具(css_parser,nokogiri等等.我正在使用Ruby进行抓取).

这是一个关于最好的解决方案的首要问题,这个解决方案只能从网站地址开始抓取网站的徽标.

我开始创建的两个解决方案是:

  1. 使用Google AJAX API通过查询"logo"进行范围限定为相关网站的图片搜索,并获取第一个结果.据我所知,大约30%的时间都有这个标识.
  2. 上面的问题是谷歌似乎并不真正关心CSS图像被替换的徽标(即用徽标替换图像的H1文本).我暂时想出的解决方案是下拉所有CSS文件,扫描url()声明,然后在文件名中查找单词标题或徽标.

解决方案二是有问题的,因为所有为网站编写CSS的人都有很多特质.他们在文件名中使用Header而不是徽标.有时文件名是随机的,对徽标一无所知.其他时候,这只是错误的形象.

我意识到我可以通过某种机器学习做一些事情,但我对客户来说有点期限,并且很快就需要一些相当能力的东西.

所有这一切,如果有人有任何"开箱即用"思考这个,我很乐意听到它.如果我可以创建一个运行良好的解决方案,我计划为任何其他感兴趣的人开放源库:)

谢谢!

Anu*_*pam 7

通过 Clearbit 检查此 API。使用起来超级简单:

只需将查询发送至:https : //logo.clearbit.com/[enter-domain-here]

例如:https : //logo.clearbit.com/www.stackoverflow.com

并取回徽标图像!

更多关于这里


hoj*_*oju 5

我不得不为以前的项目找到大约 10K 个网站的徽标,并尝试了您提到的在 URL 中提取带有“徽标”的图像的相同技术。我的变化是我在 webkit 中加载每个网页,以便所有图像都从 CSS 或 JavaScript 加载。这种技术为我提供了大约 40% 的网站的徽标。

然后我考虑创建一个像 Nick 建议的那样手动选择其余网站的徽标的应用程序,但是我意识到将这些交给便宜的人(我通过Elance找到的人)手动完成工作更具成本效益。

所以我建议不要用完全技术的解决方案来正确解决这个问题 - 外包体力劳动。


The*_*Man 2

创建应用程序肯定会对您有所帮助,但我相信最终会涉及一些手动工作。这就是我要做的。

  • 让您的应用程序在数据库中存储指向网站上大于指定尺寸的所有图像的链接,以便您可以清除小图标。
  • 然后您可以设置一个表单来访问这些结果。您可能需要设置数据库表来存储网站 url 以及 url 和图像链接之间的关系。

即使我们可以编写一个应用程序来真正弄清楚它是否是一个徽标,这似乎也会是大量的代码。最后,它可能会比上面的淘汰更多,但你必须考虑到,人类直观地解析结果可能比你编写和测试复杂代码所花费的时间更快。