Board logo

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

作者: zhuan1688    时间: 2022-3-25 08:25     标题: [已解决]怎么让这段提取网页内容的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);
复制代码

作者: went    时间: 2022-3-26 13:42

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




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2