2013-04-11 2 views
16

Я создаю новый сайт. Я хочу продвигать его, используя другой мой веб-сервис, связанный с темой. Я хочу отправить подарки людям, которые популяризировали мой первый сайт и фан-сайт. Как отфильтровать позволяет сказать 20 пользователей, которые любят/разделяют/комментируют большинство моих сообщений?Как отфильтровать наиболее активных пользователей на странице поклонников?

Любой подходящий язык программирования будет хорошим.

[EDIT]

Хорошо ... если честно, я ищу способ разбора Fanpage, что это не мое. Я хочу отправить подарки самым активным пользователям фан-страницы моего конкурса, чтобы просто подкупить их немного :)

+1

Вы не можете, facebook не позволяет страницы для запроса своих пользователей –

+0

@FabioAntunes Я не хотят запрашивать пользователей, но сообщения со страницы и далее читать, кому нравится публикация, которые делятся ею или комментируют. Эта информация доступна для всех на странице FB, поэтому в сценарии браузера с наихудшим сценарием можно написать, чтобы разобрать открытую фан-страницу. Вопрос в том, есть ли лучшее решение. – noisy

+0

О, в таком случае забудьте, что я сказал, я отправлю ответ позже, прямо сейчас я под тяжелой работой. Но вы должны использовать FQL для этого –

ответ

4

Есть несколько способов, я стартуешь с самим простым ...

  1. Say есть торговая марка или #hashtag участия, то вы могли бы пользователь поиск API как таковые: https://graph.facebook.com/search?q=watermelon&type=post&limit=1000, а затем перебрать данные, скажем, последние 1000 (limit пар), чтобы узнать пользователя режима (тот, который больше всего подходит) из всех статусов.

  2. Скажи это просто страница, то вы можете получить доступ к /<page>/posts конечной точки (например: https://developers.facebook.com/tools/explorer?method=GET&path=cocacola%2Fposts), как это даст вам список последних сообщений (они пронумерованы, так что вы можете пройти по результатам) и это будет включать список людей, которым нравятся сообщения и кто их комментирует; вы можете узнать пользователя режима и так далее.

С точки зрения кода, который вы можете использовать что-либо, вы можете даже запустить этот локально на вашем компьютере с помощью простого веб-сервера (например, MAMP или WAMP, и т.д. ...) или CLI. Ответ - это все JSON, и современные языки способны справиться с этим.Вот краткий пример, который я постучал в первый метод в Python:

import json 
import urllib2 
from collections import Counter 

def search(): 
    req = urllib2.urlopen('https://graph.facebook.com/search?q=watermelon&type=post') 
    res = json.loads(req.read()) 
    users = [] 

    for status in res['data']: 
    users.append(status['from']['name']) 

    count = Counter(users) 

    print count.most_common() 

if __name__ == '__main__': 
    search() 

Я застрял его на GitHub, если вы хотите, чтобы обратиться к нему позже: https://github.com/ahmednuaman/python-facebook-search-mode-user/blob/master/search.py

При запуске кода это ll возвращает упорядоченный список пользователей режима в этом поиске, например те, кто опубликовал большинство комментариев с конкретным тегом поиска. Это можно легко адаптировать для второго метода, если вы хотите его использовать.

+1

Этот ответ не идеален, но он дает мне достаточно информации для создания того, что мне нужно, поэтому щедрость идет к вам :) Я попробую улучшить свой код и вставить ссылку сюда позже :) – noisy

+1

http://stackoverflow.com/a/16302080/338581 – noisy

+1

@noisy Ничего себе .. Это здорово! – 5ervant

-2

написать сценарий php или jquery, который выполняется, когда пользователь щелкает или делится на вашем сайте,/нравится fb и записывает информацию о пользователе и опубликованную им/ей информацию. Теперь вы можете отслеживать, кто поделился вашей записью больше всего.

Скрипт PHP/JQuery будет действовать как средний человек, поэтому не используйте непосредственно facebook share/like script. Я попытаюсь найти код, который я написал для этого метода. Я использовал PHP & Mysql. Попробуйте использовать JQuery, это даст лучший результат с точки зрения сдерживания процесса (я имею в виду, что данные будут записаны без перезагрузки страницы).

+0

Хотя я думаю, что вы ответили на него до того, как OP отредактировал вопрос, но даже если это была его страница, это не очень надежное или эффективное решение (и есть другие способы, чтобы понравиться/комментировать страницу - скажем, прямо на Facebook - которые находятся вне вашего контроля). –

+0

спасибо. Вопрос, похоже, изменился. –

2

Прочитать список сообщений на странице на странице /feed и отслеживать идентификаторы пользователей тех пользователей, которые разместили и прокомментировали каждое сообщение, строя список того, кто делает это чаще всего.

Затем храните их где-нибудь и используйте сохраненный список в той части своей системы, которая решает, кому отправлять бонусы.

например.

http://graph.facebook.com/cocacola/feed возвращает все последние сообщения на странице Cocacola, и вы можете отслеживать идентификаторы плакатов, комментаторам, Те, кому нравится, чтобы определить, кто наиболее активных пользователей

+1

После того, как у вас есть идентификатор, вы можете использовать этот [FQL] (https://developers.facebook.com/docs/reference/fql/page_fan), чтобы получить дополнительную информацию. –

+0

Обратите внимание, что очевидно, что указанное выше решение требует, чтобы какой-либо пользователь регистрировался в FB, чтобы получить запрошенную информацию. –

+0

@TheKraken, API-интерфейс графика использует oAuth, вы можете автоматизировать генерацию токена oAuth и проанализировать ответ JSON –

-2

Ваш вопрос хорош, но это довольно сложно. (На самом деле, в начале я пришел к выводу, что это невозможно. Поэтому я создаю совершенно другое решение ...) Один из лучших способов - создать сеть, в которой ваши зрители могут зарегистрироваться в форме, которая требовала официальных URL-адресов на страницах их социальных сетей, а также они могли бы выбрать, что у них нет такой сети:

«Вы хотите поделиться некоторыми нашими страницами? Пожалуйста, зарегистрируйтесь здесь сначала .. »

Таким образом, они могут получить определенный URL-адрес, который они хотели бы разделить, когда они находятся на вашем сайте, но они не знают, что они отслеживают, когда они посетил этот конкретный URL-адрес. (Каждый раз, когда посещается определенный URL-адрес, IP-адрес отслеживается, а число посещений получает ++ 1 в базе данных.) Дайте им динамический URL-адрес в верхней части вашего веб-сайта, который находится в текстовую область каждой страницы для их отслеживания. Или используйте скрипты для автоматического добавления строки запроса трассировки на URL-адресах вашего сайта.

Я думаю, что есть бесплатное программное обеспечение для создания партнерской сети, чтобы это стало проще! Если ваши зрители действительно любят ваш сайт, они будут зарегистрированы, чтобы быть аффилированным лицом. Но эта вещь другая, партнерская сеть сильно отличается от сети, упомянутой в параграфах выше.

Но я думаю, вы также можете использовать Google Analytics, чтобы полностью отслеживать некоторые рефералы, которые не поступали с URL-адресов с помощью динамический QUERY STRING, например, Digital Point, но не из другой социальной сети, такой как Facebook, потому что вы не получите точных путей перехода с такой социальной сетью из-за пути запроса. Однако вы можете использовать его для отслеживания других сетей. Кроме того, AddThis Analytics хорош для URL-адресов без запроса.

Два вида рефералов на Google Analytics находится в «Источники трафика» меню STANDARD ОТЧЕТЫ ..

  • Источники трафика
    • Источники
      • Переходы
    • Итак CIAL
      • сети Рефералы

Этот ответ является довольно грязным, но иногда, очень полезно .. Другие, чем это?Пожалуйста, проверьте эти ссылки ниже:

  1. Publishing with an App Access Token - Facebook Developers
  2. Facebook for Websites - Facebook Developers
  3. Like - Facebook Developers
  4. Open Graph Overview - Facebook Developers
+0

Это никак не отвечает на вопрос плаката. –

+0

@TroyAlford Почему ...? – 5ervant

+2

Поскольку ОП четко спрашивает, как узнать информацию об использовании существующей страницы. Ваш ответ просит его создать собственную социальную сеть, заставить людей зарегистрироваться для нее, а затем сделать какие-то аналитики. Это даже не связано с * темой *, которую он обсуждает, - которая вращается вокруг * неэффективного метрического сбора * - не как отслеживать регистрации. –

4

на основе Ахмеда Нуаман answer (пожалуйста, дайте им +1), я подготовил этот кусок кода:

пример использования:

Для анализа наиболее активных пользователей Фейсбук http://www.facebook.com/cern

$ python FacebookFanAnalyzer.py cern likes

$ python FacebookFanAnalyzer.py cern comments

$ python FacebookFanAnalyzer.py cern likes comments

Примечания: акции и внутренние комментарии не поддерживаются

фил е: FacebookFanAnalyzer.py

# -*- coding: utf-8 -*- 
import json 
import urllib2 
import sys 
from collections import Counter 
reload(sys) 
sys.setdefaultencoding('utf8') 
############################################################### 
############################################################### 
#### PLEASE PASTE HERE YOUR TOKEN, YOU CAN GENERETE IT ON: 
#### https://developers.facebook.com/tools/explorer 
#### GENERETE AND PASTE NEW ONE, WHEN THIS WILL STOP WORKING 

token = 'AjZCBe5yhAq2zFtyNS4tdPyhAq2zFtyNS4tdPw9sMkSUgBzF4tdPw9sMkSUgBzFZCDcd6asBpPndjhAq2zFtyNS4tsBphqfZBJNzx' 

attrib_limit = 100 
post_limit = 100 
############################################################### 
############################################################### 


class FacebookFanAnalyzer(object): 

    def __init__(self, fanpage_name, post_limit, attribs, attrib_limit): 
     self.fanpage_name = fanpage_name 
     self.post_limit = post_limit 
     self.attribs = attribs 
     self.attrib_limit = attrib_limit 
     self.data={} 

    def make_request(self, attrib): 
     global token 
     url = 'https://graph.facebook.com/' + self.fanpage_name + '/posts?limit=' + str(self.post_limit) + '&fields=' + attrib + '.limit('+str(self.attrib_limit)+')&access_token=' + token 
     print "Requesting '" + attrib + "' data: " + url 
     req = urllib2.urlopen(url) 
     res = json.loads(req.read()) 

     if res.get('error'): 
      print res['error'] 
      exit() 

     return res 

    def grep_data(self, attrib): 
     res=self.make_request(attrib) 
     lst=[] 
     for status in res['data']: 
      if status.get(attrib): 
       for person in status[attrib]['data']: 
        if attrib == 'likes': 
         lst.append(person['name']) 
        elif attrib == 'comments': 
         lst.append(person['from']['name']) 
     return lst 


    def save_as_html(self, attribs): 
     filename = self.fanpage_name + '.html' 
     f = open(filename, 'w') 

     f.write(u'<html><head></head><body>') 
     f.write(u'<table border="0"><tr>') 
     for attrib in attribs: 
      f.write(u'<td>'+attrib+'</td>') 
     f.write(u'</tr>') 

     for attrib in attribs: 
      f.write(u'<td valign="top"><table border="1">') 

      for d in self.data[attrib]: 
       f.write(u'<tr><td>' + unicode(d[0]) + u'</td><td>' +unicode(d[1]) + u'</td></tr>') 

      f.write(u'</table></td>') 

     f.write(u'</tr></table>') 
     f.write(u'</body>') 
     f.close() 
     print "Saved to " + filename 

    def fetch_data(self, attribs): 
     for attrib in attribs: 
      self.data[attrib]=Counter(self.grep_data(attrib)).most_common() 

def main(): 
    global post_limit 
    global attrib_limit 

    fanpage_name = sys.argv[1] 
    attribs = sys.argv[2:] 

    f = FacebookFanAnalyzer(fanpage_name, post_limit, attribs, attrib_limit) 
    f.fetch_data(attribs) 
    f.save_as_html(attribs) 

if __name__ == '__main__': 
    main() 

Выход:

Requesting 'comments' data: https://graph.facebook.com/cern/posts?limit=50&fields=comments.limit(50)&access_token=AjZCBe5yhAq2zFtyNS4tdPyhAq2zFtyNS4tdPw9sMkSUgBzF4tdPw9sMkSUgBzFZCDcd6asBpPndjhAq2zFtyNS4tsBphqfZBJNzx 
Requesting 'likes' data: https://graph.facebook.com/cern/posts?limit=50&fields=likes.limit(50)&access_token=AjZCBe5yhAq2zFtyNS4tdPyhAq2zFtyNS4tdPw9sMkSUgBzF4tdPw9sMkSUgBzFZCDcd6asBpPndjhAq2zFtyNS4tsBphqfZBJNzx 
Saved to cern.html 

enter image description here

+0

для будущих поколений. это работает на python v2.x –

Смежные вопросы