首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我想将Facebook帖子从公共页面拉到Java应用程序中

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

Stack Overflow用户
提问于 2013-03-17 08:42:28
回答 1查看 1.7K关注 0票数 2

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

谢谢,Calland

代码语言:javascript
复制
public String[] scrapeEvents(String... args) throws Exception {
    Document doc = Jsoup.connect("http://www.facebook.com/cedarstreettimes?fref=ts").get();
    Elements elements = doc.select("div._wk");
    String s = elements.toString();

    return s;
}

编辑:我找到了这个信息链接,但我有点困惑,不知道如何处理它,让我只看到特定用户在他们的墙上发布的内容。http://developers.facebook.com/docs/getting-started/graphapi/

EN

Stack Overflow用户

发布于 2013-03-18 02:49:59

我查看了该页面的源代码--导致解析失败的是,所有真正的内容都包含在注释中,如下所示:

代码语言:javascript
复制
<code class="hidden_elem" id="u_0_42"><!-- <div class="fbTimelineSection ...> --></code>

页面上有JS将数据提升到真正的DOM中,但是由于jsoup不执行JS,所以它仍然是注释。因此,在提取内容之前,我们需要模拟JS并“取消隐藏”这些元素。下面是一个示例,帮助您入门:

代码语言:javascript
复制
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以使抓取正常工作。)

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15456415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档