我只知道怎么用java代码,给定一个url,获取jsp页面html代码,不知道有没有用,帮你顶顶
解决方案 »
- 通过rs.getString("");来获取数据失败,如何解决?谢谢!
- 通过javascript改变文本框的值
- 数据库插入:js做的模版插入一行一行的然后对每一行都存进数据库!!!
- 我上传的文件名是中文名称,在下载的时候点击文件名打开一个页面后出现乱码?请问怎么回事,如何改,是不是改server.xml
- 我想拜师学艺有兴趣的请近
- 小弟要点积分,大家齐来帮忙~!:)
- 怎样用PHP调用java对象的构造函数
- 急,请问访问数据Pagirs = db.executeQuery(Pagisql);提示由于当前未访问行,因此结果集 为 IDLE。怎么解决
- 请问如何实现在网页中存储海量数据至数据库中
- 请问各位,我这个servlet为什么不能编译通过?
- 我做的个bbs ,点提交没反应是怎么回事呀,求助?
- 找8080被占用的特殊处理方式
这个我是知道的哦,我的意思是,假如你获取的不是你要的html代码,他中间有一个跳转网页,你该怎么办呢?
Document document = DocumentHelper.createDocument();
Element root = document.addElement("records");
String[] keyList = key.split(" ");
try{
int len = keyList.length;
String temp = keyList[0];
for(int i=1;i<len;i++){
temp += "+"+keyList[i];
}
System.out.println(temp);
// HtmlProcessor pros = new HtmlProcessor();
String urlString = "http://ccc.calis.edu.cn/result.php?op=&date_from=&date_to=&order=&max=1000&dbid=&at[]="+temp+"&from[]=0&pos[]=&op=complex&changepage=0&p="+pageNo+"&pyear=&jtitle=&authorfacet=&dbfacet=&max=200&pos_sec=0&at_sec=&from_sec=0&searchSec=0";
System.out.println(urlString);
URL url = new URL(urlString);
InputStream openStream = url.openStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(openStream,"utf-8"));
String line = "";
String s = "class=\"pen1\" style=\"font-size: 14px; font-weight: normal\">";
String str = "; <em>";
int count = 0;
//openStream = url.openStream();
//reader = new BufferedReader(new InputStreamReader(openStream,"utf-8"));
while((line = reader.readLine())!=null){
//System.out.println(line);
if(line.contains(s)){
System.out.println(line);
int titlePrefixLen = s.length();
int begin = line.indexOf(s)+titlePrefixLen;
int end = line.indexOf("</span></a>");
root.addElement("title").addText(line.substring(begin, end));
count++;
}
if(line.contains("href=\"detail.php?op=read&cccid=")){
System.out.println(line);
int begin = line.indexOf("detail.php?op=read&cccid=");
int end = line.indexOf("\" class=\"bbb\"");
root.addElement("url").addText("http://ccc.calis.edu.cn/"+line.substring(begin, end));
}
if(line.contains("; <em>")){
System.out.println(line);
int authorPrefixLen = str.length();
int begin = line.indexOf("; <em>")+authorPrefixLen;
int end = line.indexOf("</em><br />");
root.addElement("author").addText(line.substring(begin, end));
}
}
root.addElement("resultCount").addText(String.valueOf(count));
return document.asXML();
}catch(Exception e){
e.printStackTrace();
root.addElement("resultCount").addText("0");
return document.asXML();
}
}
请各位给看看,有没有什么问题
说实话,没有特别好的办法。土鳖一点就是,首先判断页面长度,如果页面长度比较短,且页面中包含“自动跳转”;
那么就假定其为过渡页面。接着检索有没有 页面跳转的关键 JS 代码,比如:
location.href=
window.location=
window.navigate(此外还有另一种做法,就是用HtmlUnit来执行该页面(它带JS执行引擎),然后捕捉页面跳转事件。
参见:
http://blog.csdn.net/strawbingo/article/details/5989879
然后就去尝试抓取目标URL,再进行二次跳转。