如何使用HTML Parser从源头获取Facebook源

时间:2015-10-10 14:47:26

标签: html facebook parsing html-parsing jsoup

我试图从Facebook上的用户那里获取Facebook源代码,当我手动尝试进入用户页面时,它会向我提供所有数据。

html中的这行代码似乎不同:

  

meta name =“referrer”content =“origin-when-crossorigin”   ID = “meta_referrer”

当程序获得html时,这就是给出的内容:

  

meta name =“referrer”content =“default”id =“meta_referrer”>

这是代码,我使用的是Jsoup,这是一个Java库

public void test() throws IOException {     

String html = Jsoup.connect("https://www.facebook.com/*adduseridhere*").get().html(); 

System.out.println(html);   }

所以我的问题是,我的程序是否可以像浏览器收集html数据时那样运行?

1 个答案:

答案 0 :(得分:0)

您必须发送一些标题数据,如下所示。

首先看看是什么将浏览器从浏览器发送到该链接并尝试使用jsoup实现它。

正如我在您的示例中看到的那样,您不会发送任何标题数据,因此Facebook不会从浏览器接受它

Document doc = Jsoup
        .connect(url.trim())
        .timeout(3000)
        .header("Host", "someip")
        .header("Connection", "keep-alive")
        .header("Content-Length", "111")
        .header("Cache-Control", "max-age=0")
        .header("Accept",
                "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
        .header("User-Agent",
                "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36")
        .header("Content-Type", "application/x-www-form-urlencoded")
        .header("Referer", url.trim())
        .header("Accept-Encoding", "gzip,deflate,sdch")
        .header("Accept-Language", "en-US,en;q=0.8,ru;q=0.6")
        .userAgent("Mozilla")
        .get();