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

修改第5行变量 i 的取值范围,这里 i 设置为从 1 到 1000,最大可以取值从 1 到 145000 多
比如: var i=1001; i<=3000; i++
可以下载 1001.html 到 3000.html 页面句子。
  1. var fso = new ActiveXObject('Scripting.FileSystemObject');
  2. var http = new ActiveXObject('Microsoft.XMLHTTP');
  3. var home = 'http://www.1juzi.com/';
  4. for (var i=1; i<=1000; i++) {
  5.     var url = home + 'new/' + i + '.html'
  6.     var txt = getText(url);
  7.     var m = txt.match(/<h1>((?!服务器错误).*?)<\/h1>/);    //匹配句子标题
  8.     if(!m) continue;
  9.     var stc = [];
  10.     var reg = /<p>(?!<\/p).*<\/p>/ig;
  11.     while(arr = reg.exec(txt)) {
  12.         var s = arr[0].replace(/<[^>]*>|&nbsp;/g, '');
  13.         s = s.replace(/句子大全http:\/\/www\.1juzi\.com\//ig, '');
  14.         s = s.replace(/&lsquo;/g, '‘').replace(/&rsquo;/g, '’').replace(/&hellip;/g,'…').replace(/&#39;/g, "'");
  15.         s = s.replace(/&middot;/g, '·').replace(/&ldquo;/g, '“').replace(/&rdquo;/g, '”');
  16.         s = s.replace(/&mdash;/g, '—').replace(/&quot;/g, '"');
  17.         stc.push(s);
  18.     }
  19.     writeToFile('A' + m[1] + '\r\n' + stc.join('\r\n'));
  20. }
  21. function getText(url) {
  22.     http.open('GET', url, false);
  23.     http.send();
  24.     with(new ActiveXObject('ADODB.Stream')){
  25.         Mode = 3; Type = 1;
  26.         Open();
  27.         Write(http.responseBody);
  28.         Position = 0;
  29.         Type = 2;
  30.         Charset = 'GB2312';
  31.         var s = ReadText(-1);
  32.     }
  33.     return s;
  34. }
  35. function writeToFile(str) {
  36.     var objFile = fso.OpenTextFile('1juzi.Log', 8, true);
  37.     objFile.WriteLine(str);
  38.     objFile.Close();
  39. }
  40. WSH.Echo('Done')
复制代码
1

评分人数

TOP

本帖最后由 WHY 于 2018-9-30 19:19 编辑
  1. var fso = new ActiveXObject('Scripting.FileSystemObject');
  2. var http = new ActiveXObject('Microsoft.XMLHTTP');
  3. //var map = {'励志名言':'lizhimingyan','名人名言':'mingrenmingyan','励志文章':'lizhiwenzhang','人生感悟':'renshengganwu','经典语录':'jingdianyulu','经典句子':'jingdianjuzi','散文精选':'sanwenjingxuan','情感日志':'qingganrizhi'};
  4. var map = {'散文精选':'sanwenjingxuan'};
  5. var home = 'http://www.ceasm.com/';
  6. for (var key in map) {
  7.     var url = home + map[key] + '/';
  8.     var reg = /<h4><a href="\/([^"]*\.html)" target="_blank">([^<>]*)<\/a><\/h4>/g;
  9.     while(url != '') {
  10.         var txt = getText(url);
  11.         var m = txt.match(/<a href='([^']*\.html)'>下一页/);
  12.         url = m ? home + map[key] + m[1] : '';
  13.         txt = txt.split('<ul class="dedelist">')[1]
  14.         if(!txt) continue;
  15.         txt = txt.split('</ul>')[0];
  16.         while(arr = reg.exec(txt)) {
  17.             writeToFile('A' + arr[2] + '\r\n' + getSentence(home + arr[1]));
  18.         }
  19.     }
  20. }
  21. function getText(url) {
  22.     http.open('GET', url, false);
  23.     http.send();
  24.     with(new ActiveXObject('ADODB.Stream')){
  25.         Mode = 3; Type = 1;
  26.         Open();
  27.         Write(http.responseBody);
  28.         Position = 0;
  29.         Type = 2;
  30.         Charset = 'GB2312';
  31.         var s = ReadText(-1);
  32.     }
  33.     return s;
  34. }
  35. function getSentence(url) {
  36.     var stc = [];
  37.     while(url != '') {
  38.         var s = getText(url);
  39.         var m = s.match(/<a href='([^']*\.html)'>下一页/);
  40.         url = m ? url.replace(/[^/]*$/, '') + m[1] : '';
  41.         s = s.split('<div class="text">')[1];
  42.         if(!s) continue;
  43.         s = s.split('</table>')[0];
  44.         s = s.replace(/(?:<\/strong>)?<\/p>/g, '\r\n');
  45.         s = s.replace(/<[^>]*>|&nbsp;/g, '');
  46.         s = s.replace(/^[   ]+/gm, '');
  47.         s = s.replace(/(\r?\n)+/g, '$1').replace(/^(?:\r?\n)|(?:\r?\n)$/g, '');
  48.         s = s.replace(/&#39;/g, "'");
  49.         s = s.replace(/&lsquo;/g, '‘').replace(/&rsquo;/g, '’').replace(/&hellip;/g,'…');        
  50.         s = s.replace(/&middot;/g, '·').replace(/&ldquo;/g, '“').replace(/&rdquo;/g, '”');
  51.         s = s.replace(/&mdash;/g, '—').replace(/&quot;/g, '"');
  52.         stc.push(s);
  53.     }
  54.     return stc.join('\r\n');
  55. }
  56. function writeToFile(str) {
  57.     var objFile = fso.OpenTextFile(key + '.Log', 8, true);
  58.     objFile.WriteLine(str);
  59.     objFile.Close();
  60. }
  61. WSH.Echo('Done')
复制代码
1

评分人数

TOP

回复 7# lxh623

已修改。
有些网址打不开,继续即可。

TOP

回复 10# lxh623


    我不明白“保持网页代码”是个什么鬼,
我这里测试没有“乱码”,请举例说明你的要求。

另外,5楼脚本中第15、16、17行是替换 html 转义字符的。如果“乱码”指这些转义字符,删掉15、16、17行。

TOP

回复 13# lxh623


    这个网址我下载后用记事本打开没发现有乱码,Win10 v1803 系统。

TOP

回复 15# lxh623


    已修改。

TOP

回复 19# lxh623


    我这里没有问题。
第15行第5个字符是空白字符,不可能报错。第25行 send 报错,可能是网络或服务器自身的问题,你换个时间点再试。

TOP

返回列表