[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 apang 于 2015-6-13 14:01 编辑

保存为test.bat,需要先下载HtoX32c.exe与批处理放在一起,处理后的txt为ansi编码
  1. @set @n=0;/* & echo off
  2. md Result 2>nul
  3. pushd Result\
  4. cscript -nologo -e:jscript "%~0"
  5. "%~dp0HtoX32c" /IP /O0 *.html 2>nul
  6. del *.html
  7. pause & exit/b & rem */
  8. var url = "http://www.baidu.com/s?wd=title:管理 site:www.fjdh.cn&pn=";
  9. var intTotal = 0;
  10. var re = /"title":"(.+?)","url":"(.+?)"/ig;
  11. //获取百度搜索结果中第1~61页的标题、地址,以标题名称作为html文件名
  12. for(var i=0; i<61; i++){
  13.         var http = new ActiveXObject("MSXML2.ServerXMLHTTP");
  14.         try {
  15.                 http.open("GET", url + i*10, false);
  16.                 http.send();
  17.                 var s = GetText(http.responseBody);
  18.                 while((arr = re.exec(s)) != null){
  19.                         http.open("GET", arr[2], false);
  20.                         http.send();
  21.                         SaveFile(http.responseBody, arr[1]);
  22.                 }
  23.         } catch(e) {WScript.Echo(e.message)}
  24.         http = null;
  25. }
  26. function GetText(bin){
  27.         with(new ActiveXObject("ADODB.Stream")){
  28.                 Mode = 3;
  29.                 Type = 1;
  30.                 Open();
  31.                 Write(bin);
  32.                 Position = 0;
  33.                 Type = 2;
  34.                 CharSet = "UTF-8";
  35.                 return ReadText()
  36.         }
  37. }
  38. //下载、保存html文件
  39. function SaveFile(bin, strName){
  40.         strName = strName.replace(/[\/\|\\:<>\?\*]/g, ""); //格式化文件名
  41.         var fso = new ActiveXObject("Scripting.FileSystemObject");
  42.         if(fso.FileExists(strName + ".html")) {return ""} else intTotal+=1;
  43.         WScript.Echo((intTotal+1000+"").substr(1) + " " + strName + ".html");
  44.         with(new ActiveXObject("ADODB.Stream")){
  45.                 Mode = 3;
  46.                 Type = 1;
  47.                 Open();
  48.                 Write(bin);
  49.                 Position = 0;
  50.                 Type = 2;
  51.                 CharSet = "UTF-8";
  52.                 //保留“正文内容”到“标签:”之间的内容
  53.                 var txt = ReadText().replace(/[\s\S]+>正文内容<.*\n/, "").split(">标签:<")[0];
  54.                 txt = txt.replace(/&[a-z]+;/g, ""); //删除导致乱码的字符
  55.                 Position = 0;
  56.                 CharSet = "GBK";
  57.                 WriteText(txt);
  58.                 SetEOS;
  59.                 SaveToFile(strName + ".html", 2);
  60.         }
  61. }
复制代码
1

评分人数

TOP

回复 13# lxh623


    已修改
试了下,百度搜索结果最多61页,每页10个html文件,去掉重复后结果为580个
1

评分人数

    • lxh623: 真心感谢!技术 + 1

TOP

回复 15# lxh623


    有几个文件没有下载可能与网络有关,也可能代码有缺陷,具体不清楚。

如果仅仅是html转换成txt,可以这样:
PS: HtoX32c 对文件名长度有限制,如果文件名过长直接退出。刚开始转换一直不成功,找好久才发现这个问题。
  1. @set @n=0;/* & echo off
  2. pushd HTML\
  3. dir /b *.html *.aspx|cscript -nologo -e:jscript "%~0"
  4. "%~dp0HtoX32c" /IP /O0 *.$
  5. del *.$
  6. pause & exit/b & rem */
  7. var fso = new ActiveXObject("Scripting.FileSystemObject");
  8. while(!WScript.StdIn.AtEndOfStream){SaveFile(WScript.StdIn.ReadLine())}
  9. function SaveFile(file){
  10.         var i = 0;
  11.         with(new ActiveXObject("ADODB.Stream")){
  12.                 Mode = 3;
  13.                 Type = 2;
  14.                 CharSet = "UTF-8";
  15.                 Open();
  16.                 LoadFromFile(file);
  17.                 var txt =  ReadText().replace(/[\s\S]+>正文内容<.*\n/, "").split(">标签:<")[0];
  18.                 txt = txt.replace(/&[a-z]+;/g, "");
  19.                 var name = txt.match(/<h1>(.+?)<\/h1>/i)[1];
  20.                 name = name.replace(/[\/\|\\:"<>\?\*]/g, "").replace(/(.{128}).*/, "$1");
  21.                 var newname = name;
  22.                 while(fso.FileExists(newname + ".$")){
  23.                         i++;
  24.                         newname = name + "[" + i + "]";
  25.                 }
  26.                 Position = 0;
  27.                 CharSet = "GBK";
  28.                 WriteText(txt);
  29.                 SetEOS;
  30.                 SaveToFile(newname + ".$");
  31.         }
  32. }
复制代码
1

评分人数

TOP

返回列表