使用Mozilla Firefox的WebRequest

时间:2012-08-01 17:30:26

标签: c# .net wpf firefox webrequest

我需要访问Facebook页面的HTML,从中提取一些数据。所以,我需要创建一个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。

1 个答案:

答案 0 :(得分:8)

如果你想要的是从Facebook页面检索喜欢的数量,你可以使用Facebook's Graph API service。只是保持简单,这是我在代码中基本上做的:

  1. 检索Facebook页面的数据。在这种情况下,我使用了Coke page's data,因为它是FB列出的一个例子。
  2. 使用Json.Net解析返回的Json。还有其他方法可以做到这一点,但这只是保持简单,你可以在Codeplex获得Json.Net。我查找代码的文档来自文档中的this page。如果需要,他们的文档还可以帮助您解析和序列化更多的Json。
  3. 然后,这基本上转换为此代码。请注意,我遗漏了所有奇特的异常处理以保持简单,因为使用网络并不总是可靠的!另外,不要忘记在项目中包含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);