72

我想得到一个喜欢某个页面或其粉丝的用户列表。

FB API文档指出,您只能使用社交图获取特定页面的粉丝数量,而不能获取粉丝列表。

此处进行讨论检索Facebook粉丝姓名建议使用FQL查询,如从中选择user_id,如WHERE object_id=“您的页面id”为了获得喜欢该页面的人数,但对于同一个页面,它给出了一个空响应“{}”。

所以我想知道是否有人知道这是否可行。

  • 您只能获取您是其管理员的页面的粉丝。因此,您必须为您的请求提供一个访问令牌,该请求与您试图获取粉丝的页面的管理员帐户相关联。 评论 2010年10月26日4:00
  • 怎样?2年后,我还是不明白怎么办? 评论 2012年8月3日16:28
  • 我投了赞成票,只是为了给你第69票:D
    – 用户8517929
    评论 2018年8月11日11:47

8个答案8

重置为默认值
70

有一种“方法”可以在没有标记的情况下,使用某个扇页的个人资料ID获取扇列表的某些部分。

  1. 获取包含公共图形数据的扇形页面的id:http://graph.facebook.com/cocacola-可口可乐有40796308305个。 更新日期:2016.04.30:Facebook现在需要访问令牌来通过图形获取page_id,因此您可以解析fanpage HTML语法来获取此id,而无需来自https://www.facebook.com/{姓名}如下面的示例所示,基于fanpage上的og标记。
  2. 使用一些修改过的参数直接获得可口可乐的“like plugin”iframe显示:http://www.facebook.com/plugins/fan.php?connections=100&id=40796308305
  3. 现在查看页面来源,有很多粉丝的个人资料链接,您可以在这里找到他们的个人资料ID或昵称,如:http://www.facebook.com/michal.semeniuk.
  4. 如果您只对配置文件id感兴趣,请再次使用图形api-它将直接为您提供配置文件id:http://graph.facebook.com/michal.semeniuk更新2016.04.30:Facebook现在需要访问令牌才能获取此类信息。您可以解析配置文件HTML语法,就像第一步中的meta标记是您最好的朋友一样:<meta property=“al:android:url”content=“fb://profile/{profile_ID}”/>

现在是最好的部分:尝试刷新(F5)第2点中的链接。有一个新的全套可口可乐粉丝。只需参加uniques,你就可以获得一些不错的、几乎完整的粉丝名单。

--更新日期:2013.08.06--

你为什么不使用我现成的PHP脚本来获取一些粉丝呢?:)

更新日期:2016.04.30:在Facebook开始要求访问令牌从图形api获取公共数据后,更新了示例脚本以使用新方法。

函数fetch_fb_fans($fanpage_name,$no_of_retries=10,$pause=500000/*500ms*/){$ret=数组();//准备类似real的用户代理并接受标头$context=stream_context_create(数组('http'=>数组('header'=>'User-Agent:Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,如Gecko)Ubuntu Chromium/49.0.2623.108 Chrome/49.0.2623.108Safari/537.36\r\n接受:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\n接受编码:gzip,deflate,sdch\r\n接受语言:en-US,en;q=0.8,pl;q=0.6\r\n’);//从移动应用程序的facebook html og标记获取页面id$fanpage_html=文件获取内容('https://www.facebook.com/' . $fanpage_name,false,$context);if(!preg_match('{fb://page/(\d+)}',$fanpage.html,$id_matches)){//无效的扇页名称返回$ret;}$url='http://www.facebook.com/plugins/fan.php?connections=100&id=' . $id匹配[1];for($a=0;$a<$noof_retries;$a++){$like_html=文件获取内容($url,false,$context);preg_match_all('{href=“https?://www\.facebook\.com/([a-zA-Z0-9\._-]+)”class=“link”data-jsid=“anchor”target=“_blank”}',$like_html,$matches);if(空($matches[1])){//无法获取任何风扇-转换返回的数组,因为它可能不为空返回array_keys($ret);}其他{//将配置文件合并为数组键,使其保持唯一$ret=数组_合并($ret,array_flip($matches[1]));}//不要因为洪水泛滥而被禁止usleep($pause);}return array_keys($ret);}print_r(fetch_fb_fans('TigerPolska',2400000));
21
41

你可以使用新的脸书搜索获得粉丝:https://www.facebook.com/search/321770180859/likers?ref=about

10
  • 你能提供一些细节吗?
    – 奥列格
    评论 2014年5月15日20:16
  • 2
    @verbumSapienti这个答案从6月15日起完全有效 评论 2015年6月5日18:01
  • @jirungaray是的。您应该将原始URL中的“3217701…”替换为您的页面ID,您可以在此处找到该页面ID:findmyfacebookid.com。此外,移动版本中可能缺少此功能,因此请在桌面上尝试。 评论 2015年7月23日20:45
  • 我们可以将其嵌入iFrame吗?
    – 代码-8
    评论 2016年1月19日17:18
  • 1
    2016年仍然有效。只需确保您已登录并且已连接到相关的FB页面(例如Admin、Editor、Advertiser)
    – 卡梅拉
    评论 2016年11月3日9:14
10

使用这个。

https://www.facebook.com/browse/?type=page_fans&page_id=<您的页面id>

它将返回多达500个最近的赞。

http://www.facebook.com/browse/?type=page_fans&page_id=<您的页面id>&start=400

每一页都会给你100个粉丝。将起始值更改为(0、100、200、300、400)以获得第一个500。如果开始>=401,页面将为空白:(

4
  • 我们可以将其嵌入iFrame吗?
    – 代码-8
    评论 2016年1月19日17:18
  • 2
    马克斯现在是10000岁。
    – 诺亚
    评论 2016年10月29日17:35
  • 不再工作了?我想你必须拥有这个页面 评论 2018年3月13日20:53
  • 我不知道是否有其他方法可以获得页面id,但我找到了这个页面:findmyfbid.com网站 评论 2018年8月20日15:08
6

根据Facebook文档不可能获得页面的所有粉丝:

虽然你无法获得Facebook页面所有粉丝的列表,但你可以找出特定的人是否喜欢某个页面。

对于s3m3n的答案,Facebook粉丝插件(例如。拉莫达)现在有了限制,你在不断的请求中得到的新粉丝越来越少。您可以尝试使用我修改过的PHP脚本来可视化结果:https://gist.github.com/liruqi/7f425bd570fa8a7c73be文件-facebook_fans_by_pluginhp

另一种方法是脸书图形搜索。在搜索结果页面上:喜欢“Lamoda”页面的人,打开Chrome控制台并运行JavaScript:

var运行=0;var邮件={}总计=3000//滚动次数,可以自己根据情况定义函数getEmails(续){var friendbutton=cont.getElementsByClassName(“_ohe”);for(var i=0;i<friendbutton.length;i++){var link=friendbutton[i].getAttribute(“href”);if(link&&link.subtr(0,25)==“https://www.facebook.com/") {var parser=document.createElement('a');parser.href=链接;if(parser.pathname){path=parser.pathname.substr(1);if(路径==“profile.php”){search=parser.search.subtr(1);var args=搜索.split('&');email=args[0].split('=')[1]+“@facebook.com\n”;}其他{电子邮件=解析器.路径名.substr(1)+“@facebook.com\n”;}if(邮件[电子邮件]>0){继续;}邮件[电子邮件]=1;console.log(电子邮件);}}}}函数moreScroll(){var text=“”;containerID=“浏览结果容器”if(运行>0){containerID=“fbBrowseScrollingPagerContainer”+(运行1);}var cont=document.getElementById(containerID);if(续){运行++;var id=运行-2;如果(id>=0){setTimeout(函数(){containerID=“fbBrowseScrollingPagerContainer”+(id);var delcont=文档.getElementById(容器ID);if(delcont){获取电子邮件(delcont);delcont.parentNode.removeChild(delcont);}window.crollTo(0,document.body.scrollHeight-10);}, 1000);}}其他{console.log(“#”+containerID);}if(运行<总计){window.crollTo(0,document.body.scrollHeight+10);}setTimeout(moreScroll,2000);}//1000为间隔时间,也可以根据情况定义moreScroll();

它将加载新的粉丝并打印用户id/电子邮件,删除旧的DOM节点以避免页面崩溃。你可以找到这个脚本在这里

1

本页https://developers.facebook.com/docs/reference/fql/like(https://developers.facebook.com/docs/reference/fql/like)/写道,你无法获得粉丝列表。

“Post、Video、Note、Link、Photo和Album Graph API对象包含一个名为likes的等效连接。"

注:类似fql的查询已弃用

2
  • 1
    找不到页面
    – 贝弗
    评论 2016年8月28日17:28
  • @5年前,它就在那里。但现在类似Facebook的查询已弃用 评论 2016年12月28日8:44
0

从技术上讲,这个FQL查询应该有效,但由于某种原因,Facebook不允许它,因为缺少索引。不确定是因为政策,还是他们忘记了。

从page_fans中选择uid,其中page_id=“YOUR_page_id”
0

我创建了一个名为光泽下载Facebook页面的“粉丝”和“关注者”列表。

之后下载并为您的平台解压缩存档,您可以从终端以如下方式运行它

光泽粉丝我的名字

在哪里?我的页面名称是Facebook页面的字符串标识符。

您将被要求提供您的Facebook帐户的电子邮件和密码。请注意,此帐户需要具有可用页面角色.甚至分析师就够了。

之后,您应该会收到类似以下内容的输出

时间、种类、ID、名称、链接1581665652,比如,111111111,John Doe,https://www.facebook.com/111111111581663355,Like,22222222,卡尔·彼得森,https://www.facebook.com/222222221581661970年,Follow,33333333,Nikol Kus,https://www.facebook.com/33333333网址

此工具基于可在中找到的阅读表设置->人员和其他页面Facebook页面的一部分。

请注意,有一些限制7k个结果脸书方面。我用2万多粉丝在两页纸上测试了它没有得到超过7k的成绩。

请参阅https://github.com/zladovan/luster了解详细信息。

0

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.