【问题标题】:I would like to get data from a public Facebook wall post我想从公开的 Facebook 墙上帖子中获取数据
【发布时间】:2014-10-16 23:19:09
【问题描述】:

是否有人抓取或使用 FB API 来访问公共个人资料墙贴中的数据?如果您只是转到 URL,您可以检查元素以查看大部分数据以及 ajax 调用以在墙上无限滚动。

你会怎么做呢?

以下帖子没有得到答复,或者只是场景不同但很接近:

作为我想要完成的一个示例,此公开个人资料 https://www.facebook.com/aurelia.filion 有一个 2013 年 11 月 21 日的墙帖,我假设想从中获取数据。怎么可能?

【问题讨论】:

  • 没有用户令牌就无法获取用户墙贴。这是出于隐私原因,在没有授权该用户的情况下,您不会以严肃的方式需要来自另一个用户帐户的数据。此外,Facebook 上不允许抓取。
  • @luschn 谢谢,这是我听到的普遍回应。在这种情况下,“在没有授权该用户的情况下,您不会严重需要来自另一个用户帐户的数据”。谢谢你的信息。有趣的是,我可以在屏幕上看到某些东西,但不允许捕捉它。假设,我想我可以手动截屏。我现在会坚持使用 Twitter,更友好的 API。
  • 可能对开发者更友好(尽管 twitter api 的限制确实很痛苦),但 facebook 试图保护用户的隐私。恕我直言,不允许您抓取您使用浏览器看到的内容,这是完全可以理解的。应用程序应该与用户资料墙的业务为零。无论如何,您都不会被允许在任何地方使用它。

标签: javascript php facebook facebook-graph-api web-crawler


【解决方案1】:

禁止抓取 Facebook,除非您有明确的书面许可。


Facebook 的自动数据收集条款(复制日期 2017 年 3 月 19 日)

  1. 这些条款适用于您通过自动方式从 Facebook 收集的数据,例如通过收集机器人、机器人、蜘蛛或抓取工具(“自动数据收集”),以及您对这些数据的使用。

  2. 未经 Facebook 明确书面许可,您不得参与自动数据收集。

  3. 获得参与自动数据收集的许可即表示您同意遵守这些自动数据收集条款,这些条款通过引用包含权利和责任声明。

  4. 您同意,您对通过自动数据收集收集的数据的使用仅限于搜索索引以显示在 Internet 上,除非 Facebook 单独批准其他用途并在 Internet 上显示。

  5. 您同意不会出售通过自动数据收集收集的或从通过自动数据收集收集的数据派生的任何数据。

  6. 您同意不会以聚合或批量形式传输通过自动数据收集收集的数据。

  7. 您同意根据 Facebook 的书面请求销毁您通过自动数据收集收集的所有数据,并且您将证明此类销毁会受到伪证处罚。

  8. 您同意 Facebook 可以随时以任何理由撤销授予的任何许可,并且您同意在收到此类撤销通知后立即停止收集和使用通过自动数据收集收集的数据。

  9. 您同意在收到 Facebook 的此类核算请求后十 (10) 天内提供对通过自动数据收集收集的数据的所有使用情况的核算。

  10. 您同意不会规避 Facebook 为防止违反这些条款而采取的任何措施。

  11. 您同意不会违反任何机器人排除标头中的限制。

  12. 您同意仅使用您自己的真实 IP 地址/useragent 身份,不会在其他服务的 IP 地址/useragent 字符串下掩盖您的服务。

  13. 您同意,未经 Facebook 明确书面同意,您不会将任何经批准的 IP 地址或用户代理转让给任何一方。

  14. 您同意,任何违反这些条款的行为都可能导致您立即被禁止访问所有 Facebook 网站、产品和服务。您承认并同意,违反或威胁违反这些条款将导致无法弥补的伤害,金钱损失将是一种不充分的补救措施,并且 Facebook 有权获得临时和永久禁令救济,而无需发布任何保证金或其他担保,阻止您或代表您行事的任何人进行此类违反或威胁违反。此处的任何内容均不得解释为阻止 Facebook 寻求任何和所有可用的补救措施,包括追回金钱损失。

  15. 本文中的任何内容均不得解释为授予或许可任何知识产权,无论是通过禁止反言、暗示或其他方式。

在此处阅读完整列表https://www.facebook.com/apps/site_scraping_tos_terms.php

【讨论】:

  • 他的答案中的链接很容易理解。当然,该协议适用于所有人,而不仅仅是 Facebook 用户。在未经网站所有者同意的情况下从任何网站上抓取内容是不可行的。
【解决方案2】:

要从 facebook 墙上获取数据,您必须使用 Facebook Open Graph API 和 Facebook OAuth 从 facebook 外部登录。 你会在这里得到完整的细节facebook developer panel

【讨论】:

    【解决方案3】:

    FaceBook 已经关闭了您可以从 API 中抓取的大部分数据。除非您是朋友,否则仅限于他们的姓名、用户名、语言环境以及性别(如果我没记错的话)。这些是默认设置。如果他们特别选择分享更多信息(与一般应用程序,很少有人),就会有更多信息。

    我认为要获得帖子,您需要该人允许您的应用(开发者 ID)访问他们的帖子。

    至于刮。你可以这样做,但 FB 对此也是明智的。在向您显示验证码之前,您可以抓取大约 1,000-2,000 页。然后,您还需要多个帐户和代理。

    首先,您需要 CURL。我为 PHP 推荐以下内容:

    http://semlabs.co.uk/journal/object-oriented-curl-class-with-multi-threading

    http://semlabs.co.uk/journal/multi-threaded-stack-class-for-php

    那里有基本的例子。我相信我的历史上有一些关于登录的帖子。报废非常简单。我更喜欢 RegEx 从页面中获取详细信息,例如:

    preg_match_all( '~<div.*? class="this-data".*?>(.*?)<\/div>~is', $page, $mats );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      相关资源
      最近更新 更多