我没有真正的来源来确定 facebook 是如何做的,但这个网站可能会对你有所帮助。
我用他的想法用python开发了一个解析器。如果它可以帮助你,python 项目就在这里。
如果我尝试总结一个策略来获取没有 og 标签的数据:
- 标题:
- 搜索标题标签
- 在正文中搜索 h1
- 在正文中搜索 h2 ...
- 说明:
- 在 <meta name="description"> 中搜索
- 在正文中的可见文本中搜索(例如,第一个 <p>)
- 搜索 <meta name="twitter:description"> 是一个解决方案,但我不这样做:通常描述很糟糕,与 twitter 的内容相关的更多,而不是链接的真实内容。
- 域名:
- 搜索 <link rel="canonical">
- 搜索 og:url
- 但我做的更简单:从目标链接中提取域(在python中:
urlparse(url).netloc
- 最后但并非最不重要的:图片:
- 搜索 <link rel="image_src" href="图片网址" />
- 解析所有 <img> 标签的目标链接 html 并“排序”它们:
- 小图像:一维 <= 50px
- 坏比率图像:剩余的比率最长边/最短边> 3
- 好图片:剩下的
- 然后在好的图像中选择最大的图像。如果没有好的形象:坏的比例最大。否则:小图像中最大的。(最大 = 最大宽度 x 高度)
- 获取所有图像可能很耗时!可以使用图像的第一个字节获取尺寸,但这是另一回事(参见第二个链接)