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

[其他] 批处理如何用wget下载指定网页的指定规则标题的网页?

本帖最后由 3518228042 于 2017-7-23 22:05 编辑

网页地址
http://www.yssm.org/uctxt/109/109767/
查看代码下载指定区域内的标题,这个只是测试内容
<dd> <a style=""=style="" href="5837833.html">第四百九十章 主动</a></dd>
<dd> <a style=""=style="" href="5837834.html">七月,求下月票啦</a></dd>
<dd> <a style=""=style="" href="5837881.html">第四百九十章 群雄汇聚</a></dd>
<dd> <a style=""=style="" href="5837884.html">第四百九十一章 群雄汇聚</a></dd>
<dd> <a style=""=style="" href="5837903.html">第四百九十二章 赴会</a></dd>
<dd> <a style="color:Gray;"=style="color:Gray;" href="5837939.html">有些事,更新推迟下</a></dd>
<dd> <a style=""=style="" href="5837960.html">第四百九十三章 盛会</a></dd>
<dd> <a style=""=style="" href="5837993.html">第四百九十四章 天神</a></dd>
<dd> <a style=""=style="" href="5838085.html">第四百九十五章 悲惨的魔</a></dd>

但是不要下载这种链接的网页
<dd> <a style=""=style="" href="5837834.html">七月,求下月票啦</a></dd>
<dd> <a style="color:Gray;"=style="color:Gray;" href="5837939.html">有些事,更新推迟下</a></dd>

合并4楼,
选取下载范围: 第四百九十章 主动这一整行字符串到第四百九十五章 悲惨的魔 这一行末尾结束,
然后提取第*章前面的*.html链接,文件有这么多,
5837833.html
5837881.html
5837884.html
5837903.html
5837960.html
5837993.html
5838085.html
添加后的下载链接进行下载,链接如下
http://www.yssm.org/uctxt/109/109767/5837833.html
http://www.yssm.org/uctxt/109/109767/5837881.html
http://www.yssm.org/uctxt/109/109767/5837884.html
http://www.yssm.org/uctxt/109/109767/5837903.html
http://www.yssm.org/uctxt/109/109767/5837960.html
http://www.yssm.org/uctxt/109/109767/5837993.html
http://www.yssm.org/uctxt/109/109767/5838085.html
输出txt用wget下载,这个没搞定

正则提取这个区域后,匹配章标题后wget下载怎么弄?这个下载500章以后的,wget下载弄不了,怎么弄进去将index.html.txt的链接下载?
  1. @set @n=0;/* & echo off
  2. setlocal enabledelayedexpansion
  3. del /a /f /q index.html.txt 2>nul
  4. curl -o index.html http://www.yssm.org/uctxt/109/109767/
  5. wfr index.html -any -encin:utf-8 -encout:gbk -force
  6. dir /b index.html|cscript -nologo -e:jscript "%~0"
  7. pause & exit/b & rem */
  8. fso = new ActiveXObject("Scripting.FileSystemObject");
  9. while (!WSH.StdIn.AtEndOfStream) {
  10.     f = WSH.StdIn.ReadLine();
  11.     txt = fso.OpenTextFile(f, 1).ReadAll();
  12.     txt = txt.replace(/<a .*href=\"[^\"]+\.html\">第?(一|0*1)[章节][\s\S]*(<a .*href=\"[^\"]+\.html\">第?五百章)/g, '$2')
  13.     .replace(/(href=\")([0-9]+\.html)/g, '$1http://www.yssm.org/uctxt/109/109767/$2');
  14.     s = "";
  15.     re = /(<a .*href=\")([^\"]+\.html)(\">第?.+章)/ig;
  16.     //提取内容
  17.     while ((ar = re.exec(txt)) != null) {
  18.     s += ar[2] + "\r\n";
  19.     };
  20.     fso.OpenTextFile(f + ".txt" ,2, true).Write(s);
  21. }
复制代码

TOP

vbs
  1. If LCase(Right(WSH.FullName, 11)) = "wscript.exe" Then
  2.     CreateObject("WScript.Shell").run "%Comspec% /c cscript -nologo """ & WSH.ScriptFullName & """&pause"
  3.     WSH.Quit
  4. End If
  5. Set html = CreateObject("htmlfile")
  6. Set http = CreateObject("Msxml2.ServerXMLHTTP")
  7. url="http://www.yssm.org/uctxt/109/109767/"
  8. html.designMode = "on"
  9. http.open "GET", url, False
  10. http.send
  11. htmltext = http.responseText
  12. rem 提取内容有两种方法,一种是正则,另一种解析DOM
  13. rem 排除方法有两种,一种是判断a标签的style属性,另一种是匹配标题,如第xx章
  14. html.write htmltext
  15. s="":Set list = html.getElementsByTagName("dd")
  16. For Each item in list
  17.     Set a=item.getElementsByTagName("a")(0)
  18.     If a.getAttribute("style") ="" Then
  19.         s=s & url & split(a.getAttribute("href"),":")(1) & _
  20.             "  " & item.innerText & vbCrLf
  21.     End If
  22. Next
  23. WSH.echo s
复制代码
1

评分人数

TOP

本帖最后由 hlzj88 于 2017-7-21 23:13 编辑

可以参考我以前发的链接 http://www.bathome.net/thread-30798-1-1.html


针对你顶楼的问题,,不希望下载无关的网页,可以在提取链接后,调整汉字到链接前面,用findstr /b 来发现第一个字不是  第 的输出到一个文本来观察,会不会有的正确章节前面的确没有 第 字,然后依据新文本内容来删除章节表 文本里的内容。
目的,学习批处理

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set zs=0
  4. call :js !zs!
  5. set js=0
  6. set j=1
  7. for /f "delims=" %%i in ([在这里输入全本小说名]) do (
  8. set "t=%%i"
  9. set "t0=!t:~1,1!"
  10. set "t1=!t:~3,1!"
  11. if "!t0!"=="第" (
  12. for /f "tokens=1" %%a in ('call echo !t!') do (
  13. set "m=%%a"
  14. set "m=!m:(上)=!"
  15. set "m=!m:(中)=!"
  16. set "m=!m:(下)=!"
  17. set "m=!m:(一)=!"
  18. set "m=!m:(二)=!"
  19. set "m=!m:(三)=!"
  20. set "m=!m:(四)=!"
  21. set "m=!m:(五)=!"
  22. set "m=!m:(六)=!"
  23. set "m=!m:(七)=!"
  24. set "m=!m:(八)=!"
  25. set "m=!m:(九)=!"
  26. set "m=!m:(十)=!"
  27. )
  28. for /f "tokens=2" %%a in ('call echo !t!') do (
  29. set "k=%%a"
  30. set "k=!k:(上)=!"
  31. set "k=!k:(中)=!"
  32. set "k=!k:(下)=!"
  33. set "k=!k:(一)=!"
  34. set "k=!k:(二)=!"
  35. set "k=!k:(三)=!"
  36. set "k=!k:(四)=!"
  37. set "k=!k:(五)=!"
  38. set "k=!k:(六)=!"
  39. set "k=!k:(七)=!"
  40. set "k=!k:(八)=!"
  41. set "k=!k:(九)=!"
  42. set "k=!k:(十)=!"
  43. )
  44. )
  45. if defined m (
  46. if defined ms (
  47. if not "!m!"=="!ms!" (set /a zs+=1&&call :js !zs!)
  48. )
  49. set "ms=!m!"
  50. )
  51. md !j!>nul 2>nul
  52. set l=!m!-!k!
  53. if "!m!"=="" (
  54. if "!k!"=="" (
  55. set l=楔子
  56. )
  57. )
  58. >>!l!.txt echo;%%i
  59. >>!l!!.txt echo;
  60. )
  61. cls
  62. echo !zs!
  63. call :js !zs!
  64. pause>nul
  65. :js
  66. set 零常数=100000000000000000000000000000000
  67. :整数
  68. cls
  69. set /a 被除数=%~1
  70. set /a 除数=459
  71. set /a 精确位数=3
  72. set /a 解=!被除数!/!除数!
  73. set /a x=!解!*!除数!
  74. cls
  75. if !x!==!被除数! (
  76. set jg=!解!
  77. goto jg
  78. )
  79. :小数
  80. set 数点=!零常数:~-%精确位数%!
  81. set x=!被除数!!数点!
  82. set /a 小解=!x!/!除数!
  83. set 小数=!小解:~-%精确位数%!
  84. set 解=!解!.!小数!
  85. set jg=!解!
  86. :jg
  87. if !jg!==1 (title 进度已完成:100.0%%%
  88. Goto :Eof)
  89. for /f "tokens=2 delims=." %%b in ('call echo !jg!') do (
  90. set "ttt=%%b"
  91. set ttt1=!ttt:~0,1!
  92. set ttt2=!ttt:~1,1!
  93. set ttt3=!ttt:~2,1!
  94. if "!ttt2!"=="" (title 进度已完成:0.!ttt1!%%%
  95. Goto :Eof)
  96. if "!ttt3!"=="" (title 进度已完成:!ttt1!.!ttt2!%%%
  97. Goto :Eof) else (title 进度已完成:!ttt1!!ttt2!.!ttt3!%%%
  98. Goto :Eof)
  99. Goto :eof
  100. )
复制代码
这是以前看小说分割章节
希望对你有用
1

评分人数

TOP

给个规则啊

TOP

返回列表