【问题标题】:Facebook doesn't crawl my site's urls automaticallyFacebook 不会自动抓取我网站的网址
【发布时间】:2015-05-11 10:54:26
【问题描述】:

我有这样的博客文章网址:

http://www.topluisilanlari.com/blog/goster/48/abc

首先请更改 abc 部分(它不会对页面产生差异)。当我尝试在 facebook 上共享此 url 时,它不显示页面图像(代码中有 og:image 属性)但是当我在 facebook 调试器中输入相同的 url 并单击“获取新的抓取信息”按钮时,我的页面图像正确显示以及分享功能。

我该如何解决?

谢谢。

【问题讨论】:

    标签: facebook social facebook-sharer


    【解决方案1】:

    https://developers.facebook.com/docs/sharing/best-practices#precaching:

    第一次分享内容时,Facebook 爬虫会从分享的 URL 中抓取并缓存元数据。爬虫必须至少看到一次图像才能渲染它。这意味着第一个分享内容的人不会看到渲染的图像

    有两种方法可以避免这种情况,并在第一次点赞或分享操作时呈现图像:

    1.使用 URL 调试器预缓存图像
    通过 URL 调试器运行 URL 以预取页面的元数据。如果您更新某个内容的图像,您也应该这样做。

    2。使用 og:image:widthog:image:height 打开图形标签
    使用这些标签会将图像指定给爬虫,以便它可以立即渲染它而无需异步。

    第二个也是如此——通过og 元标记指定预览图像的尺寸。

    【讨论】:

    • 感谢您的回复,但在第一次分享后无法以正确的图像呈现。你能通过下面的网址测试一下吗?
    • 对我来说,即使是第一次调用共享对话框,它也会显示topluisilanlari.com/static/images/blog/48_200.jpg(根据要求,您的 URL 的 abc 部分被随机替换),但调试工具总是显示错误第一次尝试阅读您的页面。
    • 是的。为什么调试工具在第一次尝试读取页面时显示错误?你知道吗 ?谢谢。
    【解决方案2】:

    Facebook 不会定期抓取 URL:它不是搜索引擎。它在第一次共享页面时抓取页面并保存此信息,直到您重新抓取或重新获取页面(如您所尝试的那样)。

    更多关于开放图的信息和示例,可以在http://ogp.me 上找到,尽管open graph generator 将来可能会对您有所帮助。

    当我今天查看抓取信息时,它包含错误,并且元标记没有以/> 结尾(仅以> 结尾)。看起来我刚刚完成的重新抓取页面已经解决了这个问题。现在唯一的警告可以通过添加来修复:

    <meta property="og:url" content="http://www.topluisilanlari.com/blog/goster/48/abc"/> 
    

    您的代码有几个问题,它有validation errors,尽管这些不会导致共享问题。

    【讨论】:

      【解决方案3】:

      如果有人正在寻找有关如何让 Facebook 以编程方式抓取 URL 的详细信息,那么答案就在此页面上:https://developers.facebook.com/docs/sharing/opengraph/using-objects#update

      使用您想要抓取/抓取的 URL 发送 POST 请求,并将查询参数 ?scrape=true&amp;scrape=true 添加到该 URL(相应地)。还要在请求中添加访问令牌。

      以下是 WordPress 中发布请求的示例,但您可以为 Guzzle、Curl 等操作它。端点是 https://graph.facebook.com,正文是一个数组,其中包含带有 ?scrape=true 查询参数的 URL 和访问令牌。

      $scrape['id'] = $yoururl . '?scrape=true';
      $scrape['access_token'] = $access_token;
                                      
      $response = wp_remote_post(
                      'https://graph.facebook.com',
                      array(
                          'body' => $scrape,
                          'headers' => array(
                              'Content-Type' => 'application/x-www-form-urlencoded',
                          ),
                          'timeout' => 60,
      
                      )
                  );
      print_r($response, true); //would echo out the results of the scrape
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多