Facebook刮刀不加载动态元标记

Art*_*uro 10 html facebook meta-tags scraper web-scraping

我正在使用下面的函数(GWT)动态创建HTML元标记.在DOM上花费1秒钟.除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);
}
Run Code Online (Sandbox Code Playgroud)

这是DOM上的结果HEAD.标题aaaa和元描述已动态加载.(感谢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>
Run Code Online (Sandbox Code Playgroud)

原始HTML没有TITLE或META-DESCRIPTION标记.

Mik*_*sen 13

Facebook刮刀只能看到<meta>来自服务器的原始HTML响应中包含的标签.运行任何JavaScript代码,Flash插件,Java小程序或其他任何可能运行的成熟浏览器都不够"足够聪明".

您需要<meta>使用服务器端框架在服务器上生成这些标记.

此外,Facebook提供了一个方便的测试工具,以确保您的页面公开适当的元标记.您可能还需要添加OpenGraph标记,例如og:titleog:description.