好的,我想做的是从Java代码中从facebook下载HTML。我知道如何做到这一点,问题来了,当我想要它下载HTML,我将在View page source
在我的浏览器,当我登录而不是获得登录fb页面。
我知道我可以使用API,但我只想检查HTML中的一件事,它似乎太大了,无法包含和使用整个API。
所以我想知道是否有一种简单的方法来做到这一点(也许我应该先用我的凭据执行一些链接,尽管我不认为这是这样做的方式)。
I want to do is to download HTML from facebook from JAVA code
你可以从Urlconnection中读取。
import java.net.*;
import java.io.*;
public class URLConnectionReader {
public static void main(String[] args) throws Exception {
URL facebook = new URL("http://www.facebook.com/or any dir");
URLConnection yc = facebook.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(
yc.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();
}
}
您可以输入任何url并获得该给定页面的源代码。
查看源代码或保存源代码。
java URLConnectionReader > facebook.html(or any format)
问题来了,当我想下载HTML,因为它将是如果我我已经登录了(当然我没有,它只是下载登录页面)。我不知道怎么用程序登录,所以我我可以在登录后下载HTML
首先要提醒的是,如果你没有得到这样做的直接许可,要小心,有问题的网站可能会在他们的服务条款中排除这一点。
要回答这个问题,网站拒绝登录的原因有很多很多。要成功地做到这一点,您需要尽可能接近浏览器处理事务的方式。要做到这一点,你需要看到一个真正的浏览器在做什么。
https更棘手,因为许多HTTP嗅探器无法处理它,但httpwatch声称它可以。检查HTTP事务,然后尝试复制它们。
你的url.openConnection()调用实际上会返回一个httpurlconnection的实例,并强制转换为&那么您就可以轻松地设置各种http头,例如User-Agent。
最后一点,你说可能需要一个cookie。您的代码不会处理cookie。要做到这一点,你需要使用cookie管理器,例如:参考这个例子