跪求编程高手,做个批量保存网页内的源文件或文本的小程序~

目的:批量保存【糗事百科】网站的“最新”糗事TXT要求(最基本的):就是根据网址列表(有规律的)批量下载每个页面的源文件~小要求(这些要求如果不行的话也没关系,我还有别的... 目的:批量保存【糗事百科】网站的“最新”糗事TXT

要求(最基本的):就是根据网址列表(有规律的)批量下载每个页面的源文件~

小要求(这些要求如果不行的话也没关系,我还有别的办法,不过最好能满足):
①如果能把源文件直接转成可看的文本(最好直接生成TXT文档)而不是乱糟糟的源码就更好了;
②如果还能自动选取某部分(糗事帖子正文),而不是整个网页来保存,就更好了;
③如果编写简单的程序,请说明一下代码的意义和功能(就是加些注释),如果推荐其他软件,请详细说明使用方法(不要复制粘贴官方的)~

补充:
我试过用目标另存为,可以保存整个网页的源文件,不过①②要求无法实现~
我还试过用批处理FOR命令,生成有规律的URL列表然后用旋风批量下载,可是旋风不能下载网页。。

说明(以下是我的一些建议,可能对您有参考,也可能毫无意义,因为我不精通编程):
1.据我观察,网页源文件内,“帖子正文”的显著特征是“class="qiushi_body article "”,一段<div></div>带有这个数值,如果能做到提取这两段<Div>之间的源码,就实现了要求②,如果能转成文本,就实现了要求①;
2.不过,可能有些难度,因为末尾有两个</div>,不过,也可以提取两个“class="qiushi_body article "”之间的源码文本,但是这样,最后一篇帖子就丢掉了;
3.如果上面的实现都有难度,那可以更简单的,帖子的结尾有一个数据“class="tags"”,后面就是评分标签神马的,如果舍弃掉,只提取“class="qiushi_body article "”和“class="tags"”之间的,那么内容就很简单了,没有乱糟糟的代码,只有换行<br>一种,那样直接用Word替换就行了,可以不考虑要求①~缺点是看不了标签和评论数了。。
4.网址的URL是http://www.qiushibaike.com/late.php?s=0,“s=”后面从零开始以20的倍数递增:0、20、40、60、80……
我想保存每个页面的帖子,比如从0(第一页)到10000(500页)~

就是这些,跪求编程高手,什么语言都行,给弄一个,先跪谢了!!!
展开
 我来答
vmtvjava
2011-03-03 · 超过27用户采纳过TA的回答
知道答主
回答量:74
采纳率:0%
帮助的人:57.5万
展开全部
程序如下,实现对网页源码保存为txt文档
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class saveHtml {
/**
* 根据网址读取网页HTML内容
* @param pageUrl 网页地址
*/
public String readerPageByUrl(String pageUrl) {
URL url;
String pageString="";
try {
url = new URL(pageUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //根据HttpURLConnection得到网页的输入流
InputStream is = connection.getInputStream();
StringBuffer sb=new StringBuffer();
BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8")); //设置编码

String line = null;
while ((line = br.readLine()) != null) {
sb.append(line+"\n");
}
pageString=sb.toString();
} catch (Exception e) {
e.printStackTrace();
}finally{

}
return pageString;
}
/**
* 写入操作
* @param filePath 静态页面路径
* @param fileStr 网页内容
* @throws Exception
*/
public void writeStringToFile(String filePath, String fileStr) throws Exception //写文件
{
File file=new File(filePath);
FileOutputStream fileout = new FileOutputStream(file);
fileout.write(fileStr.getBytes());
fileout.close();
}
/**
* 生成静态页面
* @param pageUrl 网址
* @param filePath 静态页面路径
* @throws Exception
*/
public void createStaticPage(String pageUrl,String filePath) throws Exception{
//获取网页内容
String pageStr=readerPageByUrl(pageUrl);
System.out.println(pageStr);
try {
writeStringToFile(filePath, pageStr);
} catch (Exception e) {
e.printStackTrace();
}

}
//测试
public static void main(String[] args) {
saveHtml rb=new saveHtml();
String pageUrl[]={"http://www.qiushibaike.com/"};// 目标网站
try {
for(int i=0;i<pageUrl.length;i++)//对多个网页进行循环保存
{
String filePath="D://wenjian"+i+".txt"; //生成文本后保存的路径
rb.createStaticPage(pageUrl[i], filePath);
}

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
匿名用户
2011-03-03
展开全部
S常用命令详解

dir 列文件名 deltree 删除目录树 cls 清屏 cd 改变当前目录
copy 拷贝文件 diskcopy 复制磁盘 del 删除文件 format 格式化磁盘
edit 文本编辑 mem 查看内存状况 md 建立子目录 move 移动文件、改目录名
more 分屏显示 type 显示文件内容 rd 删除目录
sys 制作DOS系统盘
ren 改变文件名 xcopy 拷贝目录与文件 chkdsk 检查磁盘 attrib 设置文件属性
fdisk 硬盘分区 date 显示及修改日期 label 设置卷标号 defrag 磁盘碎片整理
msd 系统检测 path 设置搜寻目录 share 文件共享 memmaker内存优化管理
help 帮助 restore 恢复备份文件 set 设置环境变量 time 显示及修改时间
tree 列目录树 debug 随机调试程序 doskey 重新调用DOS命令 prempt 设置提示符 undelete恢复被删的文件 scandisk检测、修理磁盘

不常用DOS命令
diskcomp磁盘比较 append 设置非执行文件路径
expand 还原DOS文件 fasthelp快速显示帮助信息
fc 文件比较 interink启动服务器
setver 设置版本 intersvr启动客户机
subst 路径替换 qbasic Basic集成环境
vsafe 防病毒 unformat恢复已格式化的磁盘
ver 显示DOS版本号 smartdrv设置磁盘加速器
vol 显示磁盘卷标号 lh 将程序装入高端内存
ctty 改变控制设备 emm386 扩展内存管理
常用命令具体介绍:
一、Dir
显示目录文件和子目录列表,呵呵,这个当然是人人要知道的。
可以使用通配符(? 和 *),?表通配一个字符,*表通配任意字符
*.后缀
指定要查看后缀的文件。 上面其实也可以为“ . 后缀”,例如dir *.exe 等于dir .exe
/p
每次显示一个列表屏幕。要查看下一屏,请按键盘上的任意键。
/w
以宽格式显示列表,在每一行上最多显示 5 个文件名或目录名。
/s
列出指定目录及所有子目录中出现的每个指定的文件名。比win环境下的查找快多了
dir *.* -> a.txt 把当前目录文件列表写入a.txt
dir *.* /s -> a.txt 把当前目录文件列表写入a.txt,包括子目录下文件。
二、Attrib
显示、设置或删除指派给文件或目录的只读、存档、系统以及隐藏属性。如果在不含参数的情况下使用,则 attrib 会显示当前目录中所有文件的属性。
+r 设置只读属性。
-r 清除只读属性。
+a 设置存档文件属性。
-a 清除存档文件属性。
+s 设置系统属性。
-s 清除系统属性。
+h 设置隐藏属性。
-h 清除隐藏属性。
三、Cls
清除显示在命令提示符窗口中的所有信息,并返回空窗口,即“清屏”
四、Exit
退出当前命令解释程序并返回到系统。
五、format
格式化
/q 执行快速格式化。删除以前已格式化卷的文件表和根目录,但不在扇区之间扫描损坏区域。使用 /q 命令行选项应该仅格式化以前已格式化的完好的卷。
六、Ipconfig
显示所有当前的 TCP/IP 网络配置值、刷新动态主机配置协议 (DHCP) 和域名系统 (DNS) 设置。使用不带参数的 ipc......
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
397835375
2011-03-24 · TA获得超过1779个赞
知道小有建树答主
回答量:866
采纳率:0%
帮助的人:1282万
展开全部
程序如下,实现对网页源码保存为txt文档
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class saveHtml {
/**
* 根据网址读取网页HTML内容
* @param pageUrl 网页地址
*/
public String readerPageByUrl(String pageUrl) {
URL url;
String pageString="";
try {
url = new URL(pageUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //根据HttpURLConnection得到网页的输入流
InputStream is = connection.getInputStream();
StringBuffer sb=new StringBuffer();
BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8")); //设置编码

String line = null;
while ((line = br.readLine()) != null) {
sb.append(line+"\n");
}
pageString=sb.toString();
} catch (Exception e) {
e.printStackTrace();
}finally{

}
return pageString;
}
/**
追问
这是什么编码的程序?怎么用啊??

要存成什么扩展名?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ASK1810
2011-03-04
知道答主
回答量:16
采纳率:0%
帮助的人:8万
展开全部
获取网页内容,然后解析网页源码,提取出自己感兴趣的东西即可;
之前我做过一个解析我们学校各网站新闻页面的小工具;
用C#做的,其实就是操作字符串;
很简单的,方法都是一样的;
不过有点麻烦的是这个通用性不高;
对每一个站点都需要先手动提取其特征;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bfp3
2011-03-04 · TA获得超过295个赞
知道小有建树答主
回答量:608
采纳率:74%
帮助的人:306万
展开全部
你搜一下,网站整站下载,不过下来的都是静态的html页面,我用过很好用的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式