简述:
我用java下载网页。 但腾讯论坛只能下载前20页内容, 21页以后下载返回的都是跳转到第一页的javascript代码,不是内面内容了。但是用同样的地址在浏览器中是能正常打开的. 所以我想 既然浏览器能下载到正常的代码,我用java也一定能找到方法下载到正常的代码.
哪位高手碰到类似的问题,指点指点。
详细内容:
protected void DownLink(String link, String sEncoding, String toTxt, String tEncoding) {
//从link链接地址下载网页(sEncoding编码),存储到 toTxt文件(tEncoding编码)路径,如果toTxt文件不存在,则建立相应名称新文件保存。
try {
byte[] b;
File a = new File(toTxt);
if (!a.exists()) {
a.createNewFile();
}
OutputStreamWriter writeSource = new OutputStreamWriter(new FileOutputStream(a), tEncoding);
URL url = new URL(link);//创建连接
URLConnection uc = url.openConnection();//打开连接
InputStream in = uc.getInputStream();//读入字节流
InputStream buffer = new BufferedInputStream(in);//放入缓冲区
Reader r = new InputStreamReader(buffer, sEncoding);//创建读取器
int c;
while ((c = r.read()) != -1) {//读取存入
writeSource.write(c);
}
writeSource.close();
in.close();
buffer.close();
r.close();
} catch (IOException ex) {
Logger.getLogger(panel.class.getName()).log(Level.SEVERE, null, ex);
}
}这个代码肯定没问题.
我是应用在腾讯论坛上下载它论坛内容的
handle.DownLink(handle.shtqLink + handle.QQGetPage(1) + "?sort=1", sEncoding, ProjectDir + "/QQpage.txt", tEncoding);问题是:
腾讯好像设置了什么保护, 我只能下载他前20页内容. 下到第21页以后,返回的代码都是 论坛首页代码。
例如:
下载这个地址http://bbs.news.qq.com/b-1001024026/l-21.html?sort=1
这是 论坛按时间排序后页面的第21页地址
首先用浏览器能正常打开
我下载handle.DownLink("http://bbs.news.qq.com/b-1001024026/l-21.html?sort=1
", "utf-8", ProjectDir + "/QQpage.txt", "utf-8");
返回来的内容QQpage.txt中是类似javascript的东西,我把QQpage.txt改存为QQpage.htm之后打开,证明是跳转到首页的代码.我想:
这是QQ设置的保护。
但是既然浏览器能下载到正确的代码,就一定有办法用JAVA函数下载到正确代码。哪位高手指点指点。谁在其他应用中碰到过类似问题讨论讨论。
我用java下载网页。 但腾讯论坛只能下载前20页内容, 21页以后下载返回的都是跳转到第一页的javascript代码,不是内面内容了。但是用同样的地址在浏览器中是能正常打开的. 所以我想 既然浏览器能下载到正常的代码,我用java也一定能找到方法下载到正常的代码.
哪位高手碰到类似的问题,指点指点。
详细内容:
protected void DownLink(String link, String sEncoding, String toTxt, String tEncoding) {
//从link链接地址下载网页(sEncoding编码),存储到 toTxt文件(tEncoding编码)路径,如果toTxt文件不存在,则建立相应名称新文件保存。
try {
byte[] b;
File a = new File(toTxt);
if (!a.exists()) {
a.createNewFile();
}
OutputStreamWriter writeSource = new OutputStreamWriter(new FileOutputStream(a), tEncoding);
URL url = new URL(link);//创建连接
URLConnection uc = url.openConnection();//打开连接
InputStream in = uc.getInputStream();//读入字节流
InputStream buffer = new BufferedInputStream(in);//放入缓冲区
Reader r = new InputStreamReader(buffer, sEncoding);//创建读取器
int c;
while ((c = r.read()) != -1) {//读取存入
writeSource.write(c);
}
writeSource.close();
in.close();
buffer.close();
r.close();
} catch (IOException ex) {
Logger.getLogger(panel.class.getName()).log(Level.SEVERE, null, ex);
}
}这个代码肯定没问题.
我是应用在腾讯论坛上下载它论坛内容的
handle.DownLink(handle.shtqLink + handle.QQGetPage(1) + "?sort=1", sEncoding, ProjectDir + "/QQpage.txt", tEncoding);问题是:
腾讯好像设置了什么保护, 我只能下载他前20页内容. 下到第21页以后,返回的代码都是 论坛首页代码。
例如:
下载这个地址http://bbs.news.qq.com/b-1001024026/l-21.html?sort=1
这是 论坛按时间排序后页面的第21页地址
首先用浏览器能正常打开
我下载handle.DownLink("http://bbs.news.qq.com/b-1001024026/l-21.html?sort=1
", "utf-8", ProjectDir + "/QQpage.txt", "utf-8");
返回来的内容QQpage.txt中是类似javascript的东西,我把QQpage.txt改存为QQpage.htm之后打开,证明是跳转到首页的代码.我想:
这是QQ设置的保护。
但是既然浏览器能下载到正确的代码,就一定有办法用JAVA函数下载到正确代码。哪位高手指点指点。谁在其他应用中碰到过类似问题讨论讨论。
解决方案 »
- 紧急求救
- struts1.3 多文件上传 用静态ActionForm 怎么实现
- 初学DWR 问题
- struts的forward问题~
- 向大家求救:是否能用delphi的zlib解压java gzip压缩的字符串?
- 请问各位大哥,怎样使用读取这样的数据啊(急)
- struts服务端验证,错误时候白屏!help
- 急,我是新手
- 我用jbuilder9+jboss编的EJB部署不出来,请教一下。
- 例如我打一个JAR 包,JAR包里有一些Hibernate的XML映射文件或其他的XML形式的配置文件,然后把这个JAR包方到JBOSS的LIB目录下,然后如何
- [提问] NetBeans 6.8为项目新建HTML文件时出错,求解决方法
- 关于SQL连接问题
区别在哪, 怎么设置成同样的请求.