2011-06-01 268 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財產,如果他們有一個公共頁面,它會在私人網頁被省略。

相關問題