找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 15931|回复: 1

[文件操作] [已解决]怎么让这段提取网页内容的bat代码实时生成结果

[复制链接]
发表于 2022-3-25 08:25:31 | 显示全部楼层 |阅读模式
本帖最后由 zhuan1688 于 2022-3-27 14:18 编辑

最终还是用火车采集器了,那个效率高很多,也容易很多!

下面是我在咱论坛找到的一位老师的批量提取网页内容的代码,问题是我的a.txt里网址太多,而这个代码是提取全部内容后才会生成jieguo.txt,
请教各位老师,能不能实时生成jieguo.txt,也就是提取一个网址生成一次jieguo.txt,这样就算中途出了问题我也可以从失败的地方重新开始
如果实现不了,让代码实时显示执行过程也行,我加上echo命令后不是显示条件编译已关闭就是显示缺少;
谢谢各位老师的辛苦付出
  1. //&cls&cscript -nologo -e:jscript "%~f0"<"a.txt"&pause&exit /b

  2. function BintoStr(strBin,strCharset){
  3.     var stream = new ActiveXObject('ADODB.Stream')
  4.     stream.Type = 1
  5.     stream.Mode = 3
  6.     stream.Open()
  7.     stream.Write(strBin)
  8.     stream.Position = 0
  9.     stream.Type = 2
  10.     stream.Charset = strCharset
  11.     return stream.ReadText
  12. }

  13. function getHtmlTxt(strURL){
  14.     var http = new ActiveXObject('Msxml2.XMLHTTP');
  15.     try{
  16.         http.open('GET', strURL, false);
  17.         http.send();
  18.         var m = http.GetResponseHeader('Content-Type').match(/charset\s?=\s?([^\s;]+)/i);
  19.         if (m){
  20.             var contenttype = m[0].replace(/charset\s?=\s?/,'');
  21.             var HtmlText = BintoStr(http.ResponseBody,contenttype);
  22.             return HtmlText;
  23.         }
  24.         else{
  25.             var m = http.ResponseText.match(/<\s?meta.+?charset\s?=\s?[^\s"]+/i);
  26.             if (m){
  27.                 var contenttype = m[0].replace(/.+?charset\s?=\s?/,'');
  28.                 var HtmlText = BintoStr(http.ResponseBody,contenttype);
  29.                 return HtmlText;
  30.             }
  31.             else return http.ResponseText;
  32.         }
  33.      }catch (e){}
  34. }

  35. var fso = new ActiveXObject('Scripting.Filesystemobject');
  36. var url = WScript.StdIn.ReadAll().split(/\s/);
  37. var titlestr = descriptionstr = '';
  38. for (var i=0; i<url.length; i++)
  39. {
  40.     var txt = getHtmlTxt(url[i]);
  41.     if (txt) {
  42.         var title = /<guid isPermaLink="false">([^<]+)<\/guid>/i.exec(txt);
  43.         if (title)
  44.              titlestr += title[1]+'\r\n';
  45.         else titlestr += 'not found\r\n';
  46.     }
  47.     else{
  48.         titlestr += 'access forbidden\r\n';
  49.     }
  50. }
  51. fso.CreateTextFile('jieguo.txt',2).Write(titlestr);
复制代码
发表于 2022-3-26 13:42:36 | 显示全部楼层
42行下面插入一行
WSH.Echo(url[i]):

评分

参与人数 1技术 +1 收起 理由
zhuan1688 + 1 乐于助人

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 05:56 , Processed in 0.016667 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表