【问题标题】:Scraping a Facebook App for Data为 Facebook 应用程序抓取数据
【发布时间】:2009-12-29 04:35:43
【问题描述】:

我正在使用一个 Facebook 应用程序,其中包含我想离线获取的丰富信息。为此,我基本上需要将网页中的信息读取到我自己的数据库中。显然,我不希望手动保存页面并让我的应用程序读取页面并从中提取相关详细信息。不幸的是,我被要求首先向 Facebook 进行身份验证所阻碍。所以当我运行这段代码时:

private static string getPage(string pageAddress)
{
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri(baseUri, pageAddress));
    HttpWebResponse response = (HttpWebResponse)req.GetResponse();
    StreamReader readStream = new StreamReader(response.GetResponseStream());
    string page = readStream.ReadToEnd();
    readStream.Close();
    response.Close(); // I know, I'm paranoid and this is likely redundant...
    return page;
}

我收到此回复:

<script type="text/javascript">
if (parent != self) 
top.location.href = "http://www.facebook.com/login.php?api_key=<obscured>&canvas&v=1.0";
else self.location.href = "http://www.facebook.com/login.php?api_key=<obscured>&canvas&v=1.0";
</script>

任何想法如何告诉应用程序我真的真实的我?

【问题讨论】:

    标签: c# .net facebook


    【解决方案1】:

    据我了解,您只需要登录 facebook 应用程序,对吗?使用任何网络抓取/爬网框架(它们支持 JS、cookie 等)。他们只是模拟通常的网页浏览。例如,试试这些:

    http://scrapy.org/

    http://wwwsearch.sourceforge.net/mechanize/

    http://watin.sourceforge.net/

    另见

    .Net Screen scraping and session

    【讨论】:

    • 您知道在 .Net 中使用的任何此类库吗?
    • 添加了一个可以使用的.NET库
    • 等待胜利。这有点尴尬,但它让我可以做我想做的事。干得好。
    【解决方案2】:

    Facebook 使用 REST,因此您可以从服务器请求数据;它还能够从客户端 JavaScript API 访问数据。您可以查看 wiki 以获取更多信息;它使用 rest_server.php?method= 从适当的方法中获取数据。

    查看http://www.facebook.com/developers 以获取有关这些对象/方法/创建应用程序的更多信息,以便您可以查询 facebook 数据。

    【讨论】:

    • 我不确定你的意思,布赖恩。我不需要来自 facebook 本身的数据,我想要来自 facebook 应用程序的数据。您提供的链接没有关于对象/方法/或创建的数据。
    • 此链接:wiki.developers.facebook.com/index.php/Main_Page 与我之前发送的链接无关。来自 facebook 的数据在 facebook 应用程序中使用,所以在我看来它们是相同的,所以这就是我给你发送这个的原因......所以 API 将帮助你获取你正在寻找的数据,因为屏幕抓取被阻止。
    【解决方案3】:

    您需要使用 facebook API 从 facebook 获取数据。他们阻止了屏幕美化

    【讨论】:

    • 我不希望 Facebook 中的数据。 Facebook 没有我想要/需要的数据。他们只是在我要访问的应用程序上进行身份验证的看门人。
    【解决方案4】:

    您首先必须编写一个脚本以编程方式登录 facebook。 然后你必须保存你得到的 cookie。

    我用 curl 和 php 做了类似的事情。 (curl 内置了 cookie 处理)

    【讨论】:

      【解决方案5】:

      我认为他们正在使用 cookie 来通过身份验证,所以首先你需要你的应用程序登录到 facebook,并将 cookie 保存在 CookieContainer 中,然后将其分配给 req.CookieContainer,然后再分配给 req.GetResponse( );

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-29
        • 1970-01-01
        • 1970-01-01
        • 2013-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多