2011-06-01 1 views
0

L'objectif ici, compte tenu de l'url d'un profil facebook, d'accéder à la page de profil et de l'ouvrir. Certains code simple python:Accès aux URL de profil Facebook

from urllib2 import urlopen 
url = "http://www.facebook.com/username" 
page = urlopen(url) 

Le problème est que pour certains « nom d'utilisateur » cela provoque ERREUR HTTP 404. J'ai remarqué cette erreur ne se produit lorsque le chemin comprend un nom plutôt que le « profile.php id = XXX? "format.

Notez que nous avons seulement l'URL ici et pas l'id de l'utilisateur.

MISE À JOUR: Cela s'est avéré se produire également pour certains des formats "profile.php? Id = XXX" et d'autres noms d'utilisateurs.

+0

qu'est-ce qui PREMIER ET DERNIER? – utdemir

Répondre

0

Etes-vous en train d'essayer d'ouvrir la page dans un navigateur Web ou d'accéder à la source HTML générée par la page?

Si c'est le cas, avez-vous pensé à utiliser l'API Facebook Graph pour réaliser tout ce que vous faites? Ce sera beaucoup plus rapide et l'API est entièrement documentée. De plus, la source HTML de la page peut changer à tout moment, contrairement à l'API graphique.

Modifier

Vous pouvez utiliser l'API graphique sans avoir à même de créer une application pour obtenir l'ID utilisateur, mais va http://graph.facebook.com/username et analyse de la réponse JSON. Vous pouvez ensuite accéder au profil HTML en utilisant http://www.facebook.com/profile.php?id=userId

+0

J'essaie d'accéder à la source HTML elle-même. Notez que tout ce que j'ai est l'URL de la page, je n'ai pas l'ID et je suppose une page, pas une page d'utilisateur connecté, donc pas sûr que l'API graphique fonctionnera dans ce cas. – deepkimo

+0

Ah, oui, vous ne pouvez pas obtenir la source HTML à partir de l'API graphique. L'API graphique peut cependant obtenir la page par l'URL, exactement comme une page normale - http://graph.facebook.com/username – Connell

+0

graph.facebook.com/username renvoie une liste JSON avec des informations comme l'ID utilisateur . C'est un bon point cependant pour obtenir l'identifiant de l'utilisateur. Merci. – deepkimo

0

Tous les comptes Facebook ne sont pas accessibles en tant que FIRST.LAST, vous ne pourrez donc pas le faire de manière fiable.

Il n'y a actuellement aucune garantie qu'un compte est accessible avec un nom de meuble.

+0

Oui, mais je parle d'une URL que je peux déjà ouvrir dans le navigateur. Le problème est que je ne peux pas y accéder en utilisant du code. – deepkimo

+0

C'est assez étrange: vous avez peut-être besoin de jouer avec la chaîne User-Agent que vous envoyez. Je n'ai jamais vu cela comme un problème auparavant, mais si cela fonctionne dans le navigateur, la seule chose à laquelle je peux penser est une forme de reniflement de l'agent utilisateur de leur part pour tenter d'empêcher les scrapers d'écran stupides de réussir. Est-ce que cela fonctionne pour toutes les pages 'FIRST.LAST'? – Femi

+0

Fonctionne pour certains. – deepkimo

0

Fonctionne parfaitement bien tant que le nom d'utilisateur existe.

+0

Essayez-en quelques-unes. Pas tout le travail. – deepkimo

1

Ceci est une fonctionnalité de confidentialité de Facebook. Les utilisateurs ont la possibilité de masquer leur page de profil afin que seuls les utilisateurs connectés puissent voir leur page. Accéder à la page avec /profile.php?id=XXX ou avec /username ne fait aucune différence. Vous devez être connecté pour voir la page HTML.

Dans votre contexte, vous devez d'abord vous connecter à un compte Facebook valide avant de demander la page et vous ne devriez plus recevoir les 404.

Une façon de vérifier cela est sur l'API graphique, graph.facebook.com/USERNAME retournera une propriété link dans le JSON résultant si elles ont une page publique, et il sera omis sur les pages privées.

Questions connexes