为了账号安全,请及时绑定邮箱和手机立即绑定

Facebook API:获取喜欢页面的人/粉丝

Facebook API:获取喜欢页面的人/粉丝

largeQ 2019-08-26 09:54:34
Facebook API:获取喜欢页面的人/粉丝我想获得一个喜欢某个页面或粉丝的用户列表。FB API文档声明您只能使用社交图获得某个页面的粉丝数,但不能获得粉丝列表。这里的讨论检索Facebook粉丝名称表明可以使用FQL查询SELECT user_id FROM like WHERE object_id="YOUR PAGE ID"来获得喜欢该页面的人数,但对于同一页面,它会给出一个空响应“{}”。所以我想知道是否有人知道这是否可以做到。
查看完整描述

3 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

对于s3m3n的回答,Facebook粉丝插件(例如LAMODA)现在有限制,你在连续请求中获得的粉丝越来越少。您可以尝试我修改的PHP脚本来可视化结果:https//gist.github.com/liruqi/7f425bd570fa8a7c73be#file-facebook_fans_by_plugin-php

另一种方法是Facebook图搜索。在搜索结果页面上:喜欢名为“Lamoda”的网页,打开Chrome控制台并运行JavaScript的用户:

var run = 0;var mails = {}total = 3000; //滚动次数,可以自己根据情况定义function getEmails (cont) {
    var friendbutton=cont.getElementsByClassName("_ohe");
    for(var i=0; i<friendbutton.length; i++) {
        var link = friendbutton[i].getAttribute("href");
        if(link && link.substr(0,25)=="https://www.facebook.com/") {
            var parser = document.createElement('a');
            parser.href = link;
            if (parser.pathname) {
                path = parser.pathname.substr(1);
                if (path == "profile.php") {
                    search = parser.search.substr(1);
                    var args = search.split('&');
                    email = args[0].split('=')[1] + "@facebook.com\n";
                } else {
                    email = parser.pathname.substr(1) + "@facebook.com\n";
                }
                if (mails[email] > 0) {
                    continue;
                }
                mails[email] = 1;
                console.log(email);
            }
        }
    }}function moreScroll() {
    var text="";
    containerID = "BrowseResultsContainer"
    if (run > 0) {
        containerID = "fbBrowseScrollingPagerContainer" + (run-1);
    }
    var cont = document.getElementById(containerID);
    if (cont) {
        run++;
        var id = run - 2;
        if (id >= 0) {
            setTimeout(function() {
                containerID = "fbBrowseScrollingPagerContainer" + (id);
                var delcont = document.getElementById(containerID);
                if (delcont) {
                getEmails(delcont);
                delcont.parentNode.removeChild(delcont);
                }
                window.scrollTo(0, document.body.scrollHeight - 10);
            }, 1000);
        }
    } else {
        console.log("# " + containerID);
    }
    if (run < total) {
        window.scrollTo(0, document.body.scrollHeight + 10);
    }
    setTimeout(moreScroll, 2000);}//1000为间隔时间,也可以根据情况定义moreScroll();

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


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 1316 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信