使用密码从站点抓取文本

时间:2014-04-01 07:37:16

标签: java html web-scraping

我正在尝试自动从网站下载文本数据。在我访问网站的数据之前,我必须输入我的用户名和密码。我用来刮取文本的代码如下所示。问题是我无法弄清楚如何登录页面并重定向到数据的位置。我尝试通过浏览器登录然后通过eclipse运行我的代码,但我最终从登录屏幕获取数据。如果我不必登录,我可以从网站上退出数据。

static public void printPageA(String urlString){
    try {
        // Create a URL for the desired page
        URL url = new URL(urlString);
        // Read all the text returned by the server
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
        String str;
        while ((str = in.readLine()) != null) {
            System.out.println(str);
            // str is one line of text; readLine() strips the newline character(s)
        }
        in.close();             
    } catch (MalformedURLException e) {
    } catch (IOException e) {
    }          
}   

1 个答案:

答案 0 :(得分:0)

我建议您使用Apache HTTP Client库。它可以更容易地发出HTTP请求,它可以处理像cookies这样的事情。该网站可能使用cookie来保存有关您的会话的信息,因此您需要:

  1. 提交与提交登录表单时相同的请求。这可能是一个POST请求,其中包含用户名和密码等参数。您可以在浏览器的网络监视器中看到它(开发人员工具)。
  2. 阅读回复。它可能包含一个包含会话ID的Set-Cookie标头。您必须发送此cookie以及所有后续请求,否则您将进入登录页面。如果你使用HTTP客户端库,它会处理它,不需要在你的代码中弄乱它。
  3. 向需要身份验证的网站的任何页面创建请求。