【问题标题】:How to make javascript generated HTML indexable by google crawlers?如何使 javascript 生成的 HTML 可被谷歌爬虫索引?
【发布时间】:2013-05-31 07:55:54
【问题描述】:

我有一个带有标题导航的网络表单。

为了生成此标题导航,我对 Java 类进行了 AJAX 调用并获取 JSON 字符串作为响应。

我解析字符串并在 jQuery 中创建 HTML。下面是一个例子:

    $(document).ready(function(){
        $.ajax({
            url: '/test/newHeaderJSON',
            dataType: 'json',
            type: 'GET',
            success: function(data, textStatus, jqXHR) {
                $('ul.main-menu').append('<a href="'+ obj.header.headerItems.productMenu.link +'">' + obj.header.headerItems.productMenu.name + '</a>');
            }
        });
    });

上面的例子展示了一个通过 jQuery 添加到页面的锚标记。

现在问题来了。此锚点在页面源中看不到,因此不可抓取。

我想让这个组件可以抓取。

我已经阅读了 _escape_fragment_,但无论我在网上找到什么,我都无法理解它。

谁能告诉我如何以更容易理解的方式使用这种方法?

下面是我使用 jsp struts2 迭代器的另一种方法。即使在这种方法中,我也没有得到源代码。该代码适用于 DOM,但不适用于源代码。

 <html>
    <head>
       <script type="text/javascript">
          $.get('test/newHeader');
       </script>
    </head>
    <body>
       <s:iterator value="%{menuOptions.get('Home_Improvement').productgroup}" var="productGroupVar">
            <a href="<test:sRelativeUrl url='/${productGroupVar.groupId}'/>">${productGroupVar.name}</a>
        </s:iterator>
    </body>
 </html>

【问题讨论】:

  • 真的需要通过javascript生成链接吗?如果你想让你的 html “可抓取”,我强烈建议在服务器端生成输出,而不是试图破解。
  • 链接的内容来自内容系统。我们在任何时候都不知道会有多少链接。它可以根据业务需求随时更改。所以我们不能只在 HTML 上添加锚标签,因为我们不知道会有多少。第二种方法是在后端生成 HTML,这绝不是推荐的方式。
  • 您可能想阅读这篇文章:Making Ajax Applications Crawlable
  • 嗨 jfriend00,我已经浏览了这个链接。但是在我的情况下,我不能使用像 HtmlUnit 这样的第三方。:(
  • 有什么理由进行 ajax 调用吗?

标签: java jquery struts2 seo google-crawlers


【解决方案1】:

此锚点在页面源中看不到,因此不可抓取。

Google 能够抓取由 Javascript 生成的页面。因此,你的说法是不正确的。因此,如果指向该/那些页面的 URL 在 sitemap.xml 中可用,则没有问题。

【讨论】:

    猜你喜欢
    • 2017-02-25
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多