Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 访问Facebook个人资料URL_Python_Facebook - Fatal编程技术网

Python 访问Facebook个人资料URL

Python 访问Facebook个人资料URL,python,facebook,Python,Facebook,这里的目标是,给定用户facebook个人资料url,访问并打开个人资料页面。一些简单的python代码: from urllib2 import urlopen url = "http://www.facebook.com/username" page = urlopen(url) 问题是,对于某些“用户名”,这会导致HTTP错误404。我注意到,只有当路径包含名称而不是“profile.php?id=XXX”格式时,才会发生此错误 请注意,这里只有url,没有用户id 更新: 事实证明,对

这里的目标是,给定用户facebook个人资料url,访问并打开个人资料页面。一些简单的python代码:

from urllib2 import urlopen
url = "http://www.facebook.com/username"
page = urlopen(url)
问题是,对于某些“用户名”,这会导致HTTP错误404。我注意到,只有当路径包含名称而不是“profile.php?id=XXX”格式时,才会发生此错误

请注意,这里只有url,没有用户id

更新:
事实证明,对于某些“profile.php?id=XXX”和其他用户名格式,也会出现这种情况。

您是想在Web浏览器中打开该页面还是访问该页面生成的HTML源代码

如果是后者,您是否想过使用Facebook Graph API来实现您正在做的事情?这将快得多,而且API都有文档记录。另外,页面的HTML源代码可以随时更改,而Graph API则不会

编辑


您可以使用Graph API,而无需创建应用程序来获取用户ID,只需访问并解析JSON响应。然后,您可以使用

访问配置文件HTML。并非每个Facebook帐户都可以作为FIRST.LAST访问,因此您无法可靠地执行此操作


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

只要用户名存在,就可以正常工作。

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

在您的上下文中,您必须在请求页面之前首先登录到有效的Facebook帐户,并且您不应该再收到404


检查这一点的一种方法是在graph API上,
graph.facebook.com/USERNAME
将在生成的JSON中返回一个
link
属性,如果它们有公共页面,则在私有页面上会忽略该属性。

我正在尝试访问HTML源代码本身。请注意,我所拥有的只是页面URL,我没有id,我假设有任何页面,而不是登录的用户页面,因此不确定Graph API在这种情况下是否可以工作。啊,是的,您无法从Graph API获取HTML源代码。Graph API可以通过url获取页面,与普通页面一样-Graph.facebook.com/username返回一个JSON列表,其中包含一些信息,如用户id。这是获取用户id的一个好方法。谢谢。是的,假设您可以访问
profile.php?id=XXX
,您可以从Graph API获取用户id,然后请求该页面。我将编辑我的答案。这一点很好,但我实际上注意到一些profile.php?id=XXX也有同样的问题!是的,但我说的是一个我已经可以在浏览器中打开的URL。问题是我无法使用代码访问它。这很奇怪:也许你需要使用你发送的用户代理字符串。我以前没有看到过这是一个问题,但如果它在浏览器中工作,我唯一能想到的就是某种形式的用户代理嗅探,试图阻止更愚蠢的屏幕抓取程序成功。它是否适用于任何
第一页。最后一页
页面?如果你有一个终端,
wget-S-O-{url}
为一个有效的页面和一个无效的页面打印出什么?非常奇怪:不知道该告诉你什么。可能只是Facebook的系统错误。我注意到我偶尔会有API请求超时,当我刷新页面时,它们会突然工作。这些失败是否至少一直在发生(因此,不起作用的页面永远不会起作用,而一直起作用的页面也不会起作用)?到目前为止,这似乎是一致的。即使对于“profile.php?id=XXX”,它对不同的id也有不同的响应。对于某些ID,它会返回配置文件页面,对于某些ID,它会重定向,因此您得到的页面是缺少配置文件内容的常规facebook页面,对于某些ID,它会返回404错误。