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

Java 以编程方式阅读网页并提取一些信息,java,web-scraping,bufferedreader,Java,Web Scraping,Bufferedreader,我想以编程方式访问网页并从中提取一些信息 我想通过Javacode登录到某个网站,让服务器感觉请求实际上来自真正的浏览器 虽然有一个问题,但我几乎做到了:该网站需要一个参数--“sessiond”来传递每个请求,而每个请求都会不断变化 例如,当我第一次访问页面时,sessid=90334,在下一页时,它类似于sessid=78204 因此,urlI pass应该包含sessiond的值,否则身份验证失败:www.somesite.com/somepage.php?sessiond=75749 该

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

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

虽然有一个问题,但我几乎做到了:该网站需要一个
参数--“sessiond”
来传递每个请求,而每个请求都会不断变化

例如,当我第一次访问页面时,
sessid=90334
,在下一页时,它类似于
sessid=78204

因此,
url
I pass应该包含
sessiond
的值,否则身份验证失败:
www.somesite.com/somepage.php?sessiond=75749

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

我该怎么做?标签如下所示:

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

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

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

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

    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
    }
String startInputFragment=“=0){
int endIdx=response.indexOf(“\”>”,startIdx);
String val=response.substring(startIdx+startInputFragment.length(),
endIdx);

System.out.println(“-->”+val+”是否更适合使用