【问题标题】:Altering Facebook GraphAPI page scrape data更改 Facebook GraphAPI 页面抓取数据
【发布时间】:2014-10-18 20:45:48
【问题描述】:

所以我目前正在构建一个单页应用程序,因此需要在加载所有数据后更新元数据。 (该应用程序是严格的 javascript 和 html,几乎没有后端试图轻量级......整个应用程序约为 50kb)

不幸的是,在研究了这个问题之后,我意识到 facebook 在屏幕抓取期间永远不会看到更新的元数据,因为 js 不会运行。

但是我确实意识到,当您向https://graph.facebook.com/id=http://sitename 发送请求时,它会以这种格式响应一个对象:

{
   "url": "http://site/",
   "type": "website",
   "title": "site name",
   "image": [
      {
         "url": "http://site/thumb.jpg"
      }
   ],
   "description": "site description",
   "updated_time": "2014-10-18T20:10:29+0000",
   "id": #
}

我的问题是,是否可以更新此对象并将其发送回 facebook,并使用您希望他们使用的值?

【问题讨论】:

    标签: javascript facebook facebook-graph-api


    【解决方案1】:

    据我所知,Facebook 抓取工具只读取标题中设置的数据和 OG-tags。见:http://davidwalsh.name/facebook-meta-tags

    因此,通过在您的应用中正确设置它们,Facebook 应该会收集数据。请记住,Facebook 抓取工具有一个缓存系统,可以使用 Facebook URL linter(手动)清除它。

    此工具也可用于调试。见https://developers.facebook.com/tools/debug

    页面加载时数据需要是“静态的”(或通过服务器端语言放置),因为 Facebook 抓取工具不会解析 Javascript。

    【讨论】:

    • 加载 DOM 后元数据会更新,我相信抓取只会读取静态 html,因此它永远不会看到我的任何数据。这意味着使用调试器刷新数据不会有任何好处
    • 我认为这是不可能的。 Facebook 抓取工具确实读取每个 url 的静态数据(或动态放置)并且不调用 Javascript。你能告诉我们更多关于为什么你需要用 javascript 把它放在那里吗?
    • 因为我的应用总共只有 3 页,不包括 js 和样式表。 (404、主页和数据页)。我正在使用 url 中的哈希来识别要加载的正确 json (site/data/#id)。因为这个所有的逻辑都是通过js在客户端完成的,这意味着在加载DOM之前不能更新meta,此时scraper已经scraper了
    • 我了解,但无法解决您的问题。加载页面时,数据需要存在“静态”。也许想办法把元数据放在那里?
    • 还是谢谢你!我能想到的唯一其他方法是使用服务器端语言,但我试图避免这种情况
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多