2011-06-01 198 views
0

这里的目标是给出用户Facebook个人资料网址,访问并打开个人资料页面。一些简单的Python代码:访问Facebook个人资料网址

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

的问题是,一些“用户名”这将导致HTTP错误404,我注意到这个错误,只有当路径包括名称,而不是“profile.php ID发生= XXX? “格式。

请注意,我们只有这里的网址,而不是用户ID。

更新: 原来这也发生了一些“profile.php?id = XXX”和其他用户名格式。

+0

什么是FIRST和LAST? – utdemir 2011-06-01 14:30:07

回答

0

您是试图在网页浏览器中打开网页还是访问网页生成的HTML源代码?

如果是后者,您是否想过使用Facebook Graph API来实现您正在做的任何事情?这将更快,并且API全部记录在案。再加上页面的HTML源代码可能会随时改变,而Graph API则不会。

编辑

您可以使用图形API,而无需甚至创建一个应用程序来获得用户ID,但要http://graph.facebook.com/username和解析JSON响应。然后,您可以使用http://www.facebook.com/profile.php?id=userId

+0

我正在尝试访问HTML源本身。请注意,我拥有的仅仅是网页网址,我没有该ID,而且我假设有任何网页,而不是登录的用户页面,因此不确定Graph API在这种情况下是否能够正常工作。 – deepkimo 2011-06-01 15:20:24

+0

啊,是的,你无法从Graph API获取HTML源代码。 Graph API虽然可以通过url获取页面,但与普通页面一样 - http://graph.facebook.com/username – Connell 2011-06-01 15:25:15

+0

graph.facebook.com/username返回一个JSON列表,其中包含一些信息,如用户标识。这对于获取用户标识是一个很好的观点。谢谢。 – deepkimo 2011-06-01 15:50:00

0

访问简介HTML不是每个Facebook帐户都可以作为FIRST.LAST访问,因此您无法可靠地执行此操作。

目前不能保证可以用虚荣名称访问帐户。

+0

是的,但我正在讨论一个我已经可以在浏览器中打开的URL。问题是我无法使用代码访问它。 – deepkimo 2011-06-01 15:24:44

+0

这很奇怪:也许你需要使用你发送的用户代理字符串。我之前没有看到过这个问题,但是如果它在浏览器中有效,我能想到的唯一一件事就是用户代理的某种形式的嗅探,试图阻止灰烬屏幕刮板成功。它是否适用于任何FIRST.LAST页面? – Femi 2011-06-01 15:48:27

+0

适用于一些。 – deepkimo 2011-06-01 16:26:08

0

只要用户名存在,就可以很好地工作。

+0

尝试其中的一些。不是所有的工作。 – deepkimo 2011-06-01 15:45:40

1

这是Facebook的隐私功能。用户可以隐藏他们的个人资料页面,以便只有登录的用户才能查看他们的页面。访问页面/profile.php?id=XXX/username没有区别。您必须登录才能查看HTML页面。

在你的上下文中,你必须在请求页面之前先登录到一个有效的Facebook帐户,并且你不应该再收到404的。检查此

一种方法是在图形API,graph.facebook.com/USERNAME将生成的JSON返回link财产,如果他们有一个公共页面,它会在私人网页被省略。