【发布时间】: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