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

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

本帖最后由 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);
复制代码

42行下面插入一行
WSH.Echo(url[i]):
1

评分人数

TOP

返回列表