以编程方式读取网页并提取一些信息

时间:2012-11-15 04:23:01

标签: java web-scraping bufferedreader

我想以编程方式访问网页并从中提取一些信息。

我想通过Java代码登录某个网站,让服务器感觉该请求实际来自真正的浏览器。

我几乎就是一个问题:网站要求传递parameter - "sessid"以传递每个请求,并随着每个请求不断变化。

例如,当我第一次访问页面时sessid=90334和下一页sessid=78204

因此,url我传递的值应包含sessid,否则身份验证将失败:www.somesite.com/somepage.php?sessid=75749

该网页包含一个<input>标记,其中包含sessid的值,我必须检索该标记的值。

我该怎么做?标签是这样的:

<input type="hidden" name="sessid" value="69529">

我可以使用以下代码成功阅读整个网页:

   BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));

    StringBuilder response = new StringBuilder();
    String line;
    while ((line = rd.readLine()) != null) {
        response.append(line);
    }

1 个答案:

答案 0 :(得分:0)

您可以使用indexOf类的StringBuilder方法:

    String startInputFragment = "<input type=\"hidden\" name=\"sessid\" value=\"";
    int startIdx = response.indexOf(startInputFragment);
    if (startIdx >= 0) {
        int endIdx = response.indexOf("\">", startIdx);
        String val = response.substring(startIdx + startInputFragment.length(),
                endIdx);
        System.out.println("-->" + val + "<--");
    } else {
        //tag not found: you may throw an ex or do something else
    }