【问题标题】:Facebook scraper doesn't load dynamic meta-tagsFacebook 刮板不加载动态元标签
【发布时间】:2013-01-31 15:54:00
【问题描述】:

我正在使用下面的函数 (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);
}

这是 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>

原始 HTML 没有 TITLE 或 META-DESCRIPTION 标签。

【问题讨论】:

  • 你能展示一下它实际生成的 HTML 吗?
  • 谢谢。刚刚添加了
  • 您是否正在尝试使用 Java 应用程序添加 HTML 标记之类的? Facebook 抓取工具不会运行您的 Java 代码。它会准确地看到您的网络服务器发送的内容。
  • 没错。下面的代码在客户端(GWT 演示者)上运行。那么有没有办法做到这一点?谢谢
  • 不。在服务器上生成元标记。

标签: html facebook web-scraping meta-tags scraper


【解决方案1】:

Facebook 抓取工具只能看到来自服务器的原始 HTML 响应中包含的 &lt;meta&gt; 标签。运行任何 JavaScript 代码、Flash 插件、Java 小程序或任何其他成熟浏览器可能运行的东西都不够“智能”。

您需要使用服务器端框架在服务器上生成这些&lt;meta&gt; 标签。

此外,Facebook 提供了方便的testing tool 以确保您的页面公开适当的元标记。您可能还需要添加 OpenGraph 标签,例如 og:titleog:description

【讨论】:

  • 嗨,迈克,你关于 Facebook 刮板只看到原始 HTML 的观点是我发现的,因为我遇到了与 OP 相同的问题。但是,我想如果在对 DOM 进行更改后使用 $.getScript 加载 AddThis 会怎样。在我的理论中,FB 只会与新的 DOM 一起使用。但这不可能吗?我担心当 AddThis 触发并单击 FB 共享时,URL 会传递给 FB,然后它会独立抓取没有 javascript 编辑的元标记的共享 URL。你对此有什么想法吗?丹尼尔。
【解决方案2】:

由于某种原因,元描述没有加载上面的功能......

那是因为你只是创建一个新的 MetaElement - 但你它没有。

您必须将其附加到文档中,更具体到其head 元素。

类似

getHead().appendChild(metaDesc)

不见了。

【讨论】:

    猜你喜欢
    • 2019-03-22
    • 1970-01-01
    • 2012-06-08
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    相关资源
    最近更新 更多