gpt4 book ai didi

java - 我想将 Facebook 帖子从公共(public)页面拉到 Java 应用程序

转载 作者:行者123 更新时间:2023-11-30 09:25:00 29 4
gpt4 key购买 nike

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

谢谢,卡兰

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/

最佳答案

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

<code class="hidden_elem" id="u_0_42"><!-- <div class="fbTimelineSection ...> --></code>

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

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 以使抓取正常工作。)

关于java - 我想将 Facebook 帖子从公共(public)页面拉到 Java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15456415/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com