Facebook的刮板不加载动态元标记(Facebook scraper doesn't l

2019-07-19 23:32发布

我创建动态使用下面的函数(GWT)的HTML元标记。 它需要1秒有这个了DOM。 它的工作除了Facebook的罚款。 当我从网络共享一个链接,刮板获得的元标签是在HTML:无。 我怎样才能解决这个问题?

/**
* Include the HTML attributes: title, description and keywords (meta tags)
*/
private void createHTMLheader(MyClass thing) {

    String title=thing.getTitle();
    String description=thing.getDescription();

    Document.get().setTitle(title);

    MetaElement metaDesc = Document.get().createMetaElement();
    metaDesc.setName("description");
    metaDesc.setContent(description);
    NodeList<Element> nodes = Document.get().getElementsByTagName("head");
    nodes.getItem(0).appendChild(metaDesc);
}

这是对DOM所产生的HEAD。 标题aaaa和meta描述已动态加载。 (感谢CBroe的提示)。 在“查看源文件”功能,则不会显示这些动态代码(仅开发工具 - 视图DOM)。

<head>
    <title>aaaa</title>
    <meta content="text/html; charset=utf-8" http-equiv="content-type">
    <meta name="description" content="My description">

    <script language="javascript" type="text/javascript" src="dialective/dialective.nocache.js"></script><script defer="defer">dialective.onInjectionDone('dialective')</script>

</head>

原来的HTML不具有所有权或META-描述标签。

Answer 1:

Facebook的刮刀只能看到<meta>包含在来自服务器的最初的HTML响应标记。 这不是“聪明”运行任何JavaScript代码的Flash插件,Java小程序,或其他任何一个成熟的浏览器可能会运行。

你需要生成这些<meta>使用服务器端框架服务器上的标签。

另外,Facebook提供了一个方便的测试工具 ,以确保您的网页公开相应的meta标签。 您可能需要添加OpenGraph标签为好,如og:titleog:description



Answer 2:

出于某种原因,meta描述尚未加载与上面的功能...

那是因为你只创建一个新的MetaElement -但与它无关。

你必须把它添加到文档,更具体到它的head元素。

就像是

getHead().appendChild(metaDesc)

不见了。



文章来源: Facebook scraper doesn't load dynamic meta-tags