像爬虫那样读页面
搜索结果由三个字段构成:`<title>`、`<meta name="description">` 和地址。分享链接由第四组构成:多数平台用 Open Graph(`og:title`、`og:description`、`og:image`、`og:url`、`og:site_name`),X 用 `twitter:*`,它也会按名称回退到 `og:` 标签。本页读取所有这些,然后并排显示两个预览并应用回退,所以只有 `twitter:*` 的页面会显示成只有 `twitter:*` 的页面,而不是显示成一张有卡片的页面。
读取是对文本的扫描,而不是对活动文档的解析,这是刻意的:它正是不执行 JavaScript 的爬虫收到的东西,也是为什么写在注释里或 `<script>` 里的 `<meta>` 会被正确忽略。标签读取器与压缩器使用的是同一个,所以引号属性值里的 `>` 在这里也不会结束标签。
对某个字段无话可说的页面不会被塞入默认值:检查会把它报告为缺失,预览会显示实际会被显示的东西——没有 `og:image` 的页面是一个灰框,没有描述的页面是搜索引擎从正文里挑出的一句话。