2012-08-01 42 views
3

我需要訪問Facebook頁面的HTML,從中提取一些數據。所以,我需要創建一個WebRequest使用Mozilla Firefox的WebRequest

例子:

我的代碼工作以及其他網站,但對於Facebook,我必須先登錄才能訪問HTML。

如何使用Firefox數據爲Facebook頁面創建WebRequest

我嘗試這樣做:

List<string> HTML_code = new List<string>(); 
WebRequest request = WebRequest.Create(URL); 
using (WebResponse response = request.GetResponse()) 
using (StreamReader stream = new StreamReader(response.GetResponseStream())) 
{ 
    string line; 
    while ((line = stream.ReadLine()) != null) 
    { 
     HTML_code.Add(line); 
    } 
} 

...但是HTML是導致Facebook的主頁上的HTML時,我沒有登錄

回答

8

如果要爲檢索數你正在嘗試。來自Facebook頁面的喜歡,您可以使用Facebook's Graph API service。太簡單了,這是我基本上在代碼中所做的:

  1. 檢索Facebook頁面的數據。在這種情況下,我使用Coke page's data,因爲它是FB列出的示例。
  2. 使用Json.Net解析返回的Json。還有其他的方法可以做到這一點,但這只是簡單的,你可以通過Codeplex獲得Json.Net。我查找我的代碼的文檔來自文檔中的this page。如果需要,他們的文檔還可以幫助您解析和序列化更多的Json。

然後,基本上翻譯爲此代碼。請注意,我忽略了所有奇特的異常處理,以保持簡單,因爲使用網絡並不總是可靠的!另外不要忘記在你的項目中包含Json.Net庫!

Usings:

using System.IO; 
using System.Net; 
using Newtonsoft.Json.Linq; 

代碼:

string url = "https://graph.facebook.com/cocacola"; 
WebClient client = new WebClient(); 
string jsonData = string.Empty; 

// Load the Facebook page info 
Console.WriteLine("Connecting to Facebook..."); 
using (Stream data = client.OpenRead(url)) 
{ 
    using (StreamReader reader = new StreamReader(data)) 
    { 
     jsonData = reader.ReadToEnd(); 
    } 
} 

// Get number of likes from Json data 
JObject jsonParsed = JObject.Parse(jsonData); 
int likes = (int)jsonParsed.SelectToken("likes"); 

// Write out the result 
Console.WriteLine("Number of Likes: " + likes);