我想将Facebook帖子从公共页面拉到Java应用程序

我想将Facebook帖子从公共页面拉到Java应用程序,java,facebook,jsoup,Java,Facebook,Jsoup,我正在用Java创建一个应用程序,它将从公共网站获取所有信息,并将其加载到应用程序中,供人们使用jsoup阅读。我在Facebook上尝试了同样的功能,但它的工作方式不同。有人知道我该怎么做吗 谢谢, 卡兰德 编辑:我找到了这个信息链接,但我有点困惑如何操作它,只得到特定用户在他们墙上发布的内容 我查看了该页面的源代码——在解析过程中遇到的问题是,所有真实内容都包含在注释中,如下所示: 页面上有JS将数据提升到真正的DOM中,但由于jsoup不执行JS,它将作为注释保留。因此,在提取内容之前

我正在用Java创建一个应用程序,它将从公共网站获取所有信息,并将其加载到应用程序中,供人们使用jsoup阅读。我在Facebook上尝试了同样的功能,但它的工作方式不同。有人知道我该怎么做吗

谢谢, 卡兰德


编辑:我找到了这个信息链接,但我有点困惑如何操作它,只得到特定用户在他们墙上发布的内容

我查看了该页面的源代码——在解析过程中遇到的问题是,所有真实内容都包含在注释中,如下所示:

页面上有JS将数据提升到真正的DOM中,但由于jsoup不执行JS,它将作为注释保留。因此,在提取内容之前,我们需要模拟JS并“取消隐藏”这些元素。下面是一个让您开始学习的示例:

String url = "https://www.facebook.com/cedarstreettimes?fref=ts";
String ua = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.33 (KHTML, like Gecko) Chrome/27.0.1438.7 Safari/537.33";
Document doc = Jsoup.connect(url).userAgent(ua).timeout(10*1000).get();

// move the hidden commented out html into the DOM proper:
Elements hiddenElements = doc.select("code.hidden_elem");
for (Element hidden: hiddenElements) {
    for (Node child: hidden.childNodesCopy()) {
        if (child instanceof Comment) {
            hidden.append(((Comment) child).getData()); // comment data parsed as html
        }
    }
}

Elements articles = doc.select("div[role=article]");
for (Element article: articles) {
    if (article.select("span.userContent").size() > 0) {
        String text = article.select("span.userContent").text();
        String imgUrl = article.select("div.photo img").attr("abs:src");
        System.out.println(String.format("%s\n%s\n\n", text,imgUrl));
    }
}
该示例提取文章文本和与之关联的任何照片


(使用这种方法的FB API可能更好;我想展示一下如何模拟一些JS,使刮片正常工作。)

是否可以在帖子上获取文本评论??是否可以使用jsoup从facebook页面获取新的喜欢次数,例如从我需要新页面喜欢次数的页面。
String url = "https://www.facebook.com/cedarstreettimes?fref=ts";
String ua = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.33 (KHTML, like Gecko) Chrome/27.0.1438.7 Safari/537.33";
Document doc = Jsoup.connect(url).userAgent(ua).timeout(10*1000).get();

// move the hidden commented out html into the DOM proper:
Elements hiddenElements = doc.select("code.hidden_elem");
for (Element hidden: hiddenElements) {
    for (Node child: hidden.childNodesCopy()) {
        if (child instanceof Comment) {
            hidden.append(((Comment) child).getData()); // comment data parsed as html
        }
    }
}

Elements articles = doc.select("div[role=article]");
for (Element article: articles) {
    if (article.select("span.userContent").size() > 0) {
        String text = article.select("span.userContent").text();
        String imgUrl = article.select("div.photo img").attr("abs:src");
        System.out.println(String.format("%s\n%s\n\n", text,imgUrl));
    }
}