代码之家  ›  专栏  ›  技术社区  ›  Vulkan

如何从随机网页中提取文本和图像?

  •  8
  • Vulkan  · 技术社区  · 8 年前

    我需要一种在互联网上直观地表示随机网页的方法。

    比如说 this 网页

    目前,我可以使用以下标准资产:

    • Favicon公司 :太小,太抽象。
    • 标题 :非常具体,但视觉美感较差。
    • 统一资源定位地址 :没有人喜欢阅读。
    • 偶像 :太抽象。
    • 缩略图 :难以获得,太难看(许多元素塞进一个小空间)。

    我需要以一种非常有意义的方式直观地表示一个随机网站,并邀请其他人点击它。

    我需要一些类似Facebook在您共享链接时所做的事情:

    enter image description here

    它会删除图像的链接,然后创建一个美丽而有意义的平铺,可以点击。

    enter image description here

    有没有办法从网站上抓取图像和文本?我主要对Objective-C/JavaScript组合感兴趣,但任何东西都可以,都会被选为认可的答案。

    编辑:重新撰写文章并更改标题。

    3 回复  |  直到 8 年前
        1
  •  6
  •   Unglückspilz    8 年前

    网站通常会为用户友好的社交媒体共享提供元信息,例如 Open Graph protocol tags . 事实上,在您自己的示例中,reddit页面有打开的图形标记,这些标记构成了链接预览中的信息(使用 og: 属性)。

    一种回退方法是为尚未符合 standardized format 或者尝试并大致猜测给定网站上最突出的内容是什么(例如,折叠上方的最大图像、第一段的前几句话、标题元素中的文本等)。

    前一种方法的问题是,随着这些网站的变化和发展,您必须维护解析器,而使用后一种方法,您无法可靠地预测页面上的重要内容,并且您也不能期望总是找到您要查找的内容(例如缩略图的图像)。

    由于你永远无法为所有的网站生成有意义的预览,这归结为一个简单的问题。成功链接预览的可接受率是多少?如果它接近解析标准元信息所能得到的,我会坚持这样做,省得自己头疼。如果没有,除了上面共享的库之外,您还可以查看付费服务/API,它可能会覆盖比您自己更多的用例。

        2
  •  2
  •   andrew    8 年前

    这就是OpenGraph标准的目的。例如,如果您转到示例中的Reddit帖子,您可以查看HTML提供的页面信息 <meta /> 标记(所有名称以“og”开头的标记):

    reddit opengraph example

    但是,您不可能从web浏览器中获取数据;CORS阻止对URL的请求。事实上,Facebook所做的似乎是将URL发送到他们的服务器,让他们执行请求以获取所需的信息,然后将其发送回去。

        3
  •  1
  •   Rahul Mahadik    8 年前

    你可以开发自己的 链接预览插件 或者使用现有的第三方可用插件。

    无法在此张贴示例。但我可以访问流行链接预览插件的URL。可以免费也可以付费。

    您可以查看url演示 here ,在中给出响应 JSON 未经加工的 数据 您也可以使用API。

    希望有帮助。