3

我需要访问 Facebook 页面的 HTML,以从中提取一些数据。所以,我需要创建一个WebRequest.

例子:

我的代码在其他网站上运行良好,但对于 Facebook,我必须登录才能访问 HTML。

如何使用 Firefox 数据创建WebRequestFacebook 页面?

我试过这个:

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。

4

1 回答 1

8

如果您想要从 Facebook 页面检索点赞数,您可以使用Facebook 的 Graph API 服务。太简单了,这就是我在代码中基本上所做的:

  1. 检索 Facebook 页面的数据。在这种情况下,我使用了可口可乐页面的数据,因为它是 FB 列出的示例。
  2. 使用 Json.Net 解析返回的 Json。还有其他方法可以做到这一点,但这只是保持简单,您可以在Codeplex获得 Json.Net 。我查找代码的文档来自文档中的此页面。如果需要,他们的文档还将帮助您解析和序列化更多 Json。

然后这基本上转化为这段代码。请注意,我省略了所有花哨的异常处理以保持简单,因为使用网络并不总是可靠的!另外不要忘记在您的项目中包含 Json.Net 库!

用途:

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);
于 2012-08-01T18:52:24.223 回答