标题: [其他] 批处理如何用wget下载指定网页的指定规则标题的网页? [打印本页]
作者: 3518228042 时间: 2017-7-21 17:29 标题: 批处理如何用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下载,这个没搞定
作者: bbaa 时间: 2017-7-21 18:37
给个规则啊
作者: bbaa 时间: 2017-7-21 18:53
- @echo off
- setlocal enabledelayedexpansion
- set zs=0
- call :js !zs!
- set js=0
- set j=1
- for /f "delims=" %%i in ([在这里输入全本小说名]) do (
- set "t=%%i"
- set "t0=!t:~1,1!"
- set "t1=!t:~3,1!"
- if "!t0!"=="第" (
- for /f "tokens=1" %%a in ('call echo !t!') do (
- set "m=%%a"
- set "m=!m:(上)=!"
- set "m=!m:(中)=!"
- set "m=!m:(下)=!"
- set "m=!m:(一)=!"
- set "m=!m:(二)=!"
- set "m=!m:(三)=!"
- set "m=!m:(四)=!"
- set "m=!m:(五)=!"
- set "m=!m:(六)=!"
- set "m=!m:(七)=!"
- set "m=!m:(八)=!"
- set "m=!m:(九)=!"
- set "m=!m:(十)=!"
- )
- for /f "tokens=2" %%a in ('call echo !t!') do (
- set "k=%%a"
- set "k=!k:(上)=!"
- set "k=!k:(中)=!"
- set "k=!k:(下)=!"
- set "k=!k:(一)=!"
- set "k=!k:(二)=!"
- set "k=!k:(三)=!"
- set "k=!k:(四)=!"
- set "k=!k:(五)=!"
- set "k=!k:(六)=!"
- set "k=!k:(七)=!"
- set "k=!k:(八)=!"
- set "k=!k:(九)=!"
- set "k=!k:(十)=!"
- )
- )
- if defined m (
- if defined ms (
- if not "!m!"=="!ms!" (set /a zs+=1&&call :js !zs!)
- )
- set "ms=!m!"
- )
- md !j!>nul 2>nul
- set l=!m!-!k!
- if "!m!"=="" (
- if "!k!"=="" (
- set l=楔子
- )
- )
- >>!l!.txt echo;%%i
- >>!l!!.txt echo;
- )
- cls
- echo !zs!
- call :js !zs!
- pause>nul
- :js
- set 零常数=100000000000000000000000000000000
- :整数
- cls
- set /a 被除数=%~1
- set /a 除数=459
- set /a 精确位数=3
- set /a 解=!被除数!/!除数!
- set /a x=!解!*!除数!
- cls
- if !x!==!被除数! (
- set jg=!解!
- goto jg
- )
- :小数
- set 数点=!零常数:~-%精确位数%!
- set x=!被除数!!数点!
- set /a 小解=!x!/!除数!
- set 小数=!小解:~-%精确位数%!
- set 解=!解!.!小数!
- set jg=!解!
- :jg
- if !jg!==1 (title 进度已完成:100.0%%%
- Goto :Eof)
- for /f "tokens=2 delims=." %%b in ('call echo !jg!') do (
- set "ttt=%%b"
- set ttt1=!ttt:~0,1!
- set ttt2=!ttt:~1,1!
- set ttt3=!ttt:~2,1!
- if "!ttt2!"=="" (title 进度已完成:0.!ttt1!%%%
- Goto :Eof)
- if "!ttt3!"=="" (title 进度已完成:!ttt1!.!ttt2!%%%
- Goto :Eof) else (title 进度已完成:!ttt1!!ttt2!.!ttt3!%%%
- Goto :Eof)
- Goto :eof
- )
复制代码
这是以前看小说分割章节
希望对你有用
作者: hlzj88 时间: 2017-7-21 22:34
本帖最后由 hlzj88 于 2017-7-21 23:13 编辑
可以参考我以前发的链接 http://www.bathome.net/thread-30798-1-1.html
针对你顶楼的问题,,不希望下载无关的网页,可以在提取链接后,调整汉字到链接前面,用findstr /b 来发现第一个字不是 第 的输出到一个文本来观察,会不会有的正确章节前面的确没有 第 字,然后依据新文本内容来删除章节表 文本里的内容。
作者: qazplm 时间: 2017-7-22 12:37
vbs- If LCase(Right(WSH.FullName, 11)) = "wscript.exe" Then
- CreateObject("WScript.Shell").run "%Comspec% /c cscript -nologo """ & WSH.ScriptFullName & """&pause"
- WSH.Quit
- End If
- Set html = CreateObject("htmlfile")
- Set http = CreateObject("Msxml2.ServerXMLHTTP")
- url="http://www.yssm.org/uctxt/109/109767/"
- html.designMode = "on"
- http.open "GET", url, False
- http.send
- htmltext = http.responseText
- rem 提取内容有两种方法,一种是正则,另一种解析DOM
- rem 排除方法有两种,一种是判断a标签的style属性,另一种是匹配标题,如第xx章
- html.write htmltext
- s="":Set list = html.getElementsByTagName("dd")
- For Each item in list
- Set a=item.getElementsByTagName("a")(0)
- If a.getAttribute("style") ="" Then
- s=s & url & split(a.getAttribute("href"),":")(1) & _
- " " & item.innerText & vbCrLf
- End If
- Next
- WSH.echo s
复制代码
作者: 3518228042 时间: 2017-7-23 22:08
正则提取这个区域后,匹配章标题后wget下载怎么弄?这个下载500章以后的,wget下载弄不了,怎么弄进去将index.html.txt的链接下载?- @set @n=0;/* & echo off
- setlocal enabledelayedexpansion
-
- del /a /f /q index.html.txt 2>nul
- curl -o index.html http://www.yssm.org/uctxt/109/109767/
- wfr index.html -any -encin:utf-8 -encout:gbk -force
-
- dir /b index.html|cscript -nologo -e:jscript "%~0"
- pause & exit/b & rem */
- fso = new ActiveXObject("Scripting.FileSystemObject");
- while (!WSH.StdIn.AtEndOfStream) {
- f = WSH.StdIn.ReadLine();
- txt = fso.OpenTextFile(f, 1).ReadAll();
- txt = txt.replace(/<a .*href=\"[^\"]+\.html\">第?(一|0*1)[章节][\s\S]*(<a .*href=\"[^\"]+\.html\">第?五百章)/g, '$2')
- .replace(/(href=\")([0-9]+\.html)/g, '$1http://www.yssm.org/uctxt/109/109767/$2');
- s = "";
- re = /(<a .*href=\")([^\"]+\.html)(\">第?.+章)/ig;
- //提取内容
- while ((ar = re.exec(txt)) != null) {
- s += ar[2] + "\r\n";
- };
- fso.OpenTextFile(f + ".txt" ,2, true).Write(s);
- }
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |