我想以编程方式访问网页并从中提取一些信息。
我想通过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);
}
答案 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
}