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

时间:2018-03-17 21:06:33

标签: javascript html ios objective-c wkwebview

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

让我们举例说明this网页。

目前,这些是我可以使用的标准资产:

  • Favicon :太小,太抽象。
  • 标题:非常具体,但视觉美感不佳。
  • 网址:没有人愿意阅读。
  • 图标:太抽象。
  • 缩略图:难以获得,太难看了(很多元素都挤在一个小空间里)。

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

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

enter image description here

它会废弃图片链接,然后创建一个美丽有意义的图块,邀请您点击。

enter image description here

任何方式我都可以从网站上抓取图像和文字?我主要对Objective-C / JavaScript组合感兴趣,但任何事情都会被选为批准的答案。

编辑:重新撰写帖子并更改了标题。

3 个答案:

答案 0 :(得分:6)

网站通常会为用户友好的社交媒体分享提供元信息,例如Open Graph protocol tags。实际上,在您自己的示例中,reddit页面具有Open Graph标记,这些标记构成了链接预览中的信息​​(查找带有 og:属性的元标记)。

后备方法是为大多数尚未符合standardized format的热门网站实施特定于网站的解析代码,或尝试一般猜测给定网站上最突出的内容是什么(例如,最重要的图像,第一段的前几句,标题元素中的文字等。

前一种方法的问题在于,您必须维护解析器,因为这些网站会发生变化和演变,而后者则无法可靠地预测页面上的重要内容,而您无法始终找到您的内容。重新寻找(例如缩略图的图像)。

由于您永远无法为100%的网站生成有意义的预览,因此归结为一个简单的问题。成功链接预览的可接受率是多少?如果它接近解析标准元信息的内容,我会坚持使用它并为自己省去很多麻烦。如果没有,或者上面分享的图书馆,您还可以查看付费服务/ API,这些服务/ API可能会覆盖比您自己更多的用例。

答案 1 :(得分:2)

这就是OpenGraph标准的用途。例如,如果您转到示例中的Reddit帖子,则可以查看HTML <meta />标记提供的网页信息(所有名称以&#39; og&#39;开头):

reddit opengraph example

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

答案 2 :(得分:1)

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

此处发布示例是不可能的。但我可以链接流行的链接预览插件的URL。可以免费或付费。

您可以查看您的网址演示here,其中包含 JSON 原始数据的响应 您也可以使用API​​。

希望它有所帮助。