我用楼主的批处理无法下载,调试了一下发现在几个地方用上指定路径就OK了。我是一个菜鸟,说得不一定正确请指教:- @echo on
- setlocal enabledelayedexpansion
-
- :: 获取含有具体网页下载链接清单的网页
- title 获取含有具体下载链接的网页
- md index 2>nul
- curl -o index\#1.html "http://www.51voa.com/Go_English_[1-2].html"
- htox32c /ip /o0 /u3 index\*.html
- wfr index\*.txt -any -encin:utf-8 -encout:gbk -force
-
- :: 提取具体网页的下载链接并下载之
- cls
- title 下载每一个教程的网页文件
- md content 2>nul
- pushd index
- for %%i in (*.txt) do (
- for /f "skip=76 tokens=*" %%j in (%%i) do (
- set "UrlHtml=%%j"
- if "!UrlHtml:~0,23!"=="</Voa_English_Learning/" (
- for /f "tokens=2*" %%k in ("!NameHtml!") do (
- set "NameHtml=%%l"
- set "NameHtml=!NameHtml: =!"
- set "NameHtml=!NameHtml::=:!"
- set "UrlHtml=http://www.51voa.com/!UrlHtml:~1,-1!"
- title 正在下载 %%k_!NameHtml! 的网页数据
- ..\curl -o "..\content\%%k_!NameHtml!.html" "!UrlHtml!"
- )
- )
- set "NameHtml=%%j"
- )
- )
- popd
-
- :: 下载每一课程中的mp3文件,并提取所有课程中的文字内容分别保存
- cls
- title 网页转文本
- md result 2>nul
- pushd content
- ..\htox32c /ip /o0 /u3 *.html
- ..\wfr *.txt -any -encin:utf-8 -encout:gbk -force
-
- cls
- for %%i in (*.txt) do (
- for /f "tokens=*" %%j in ('findstr /i "path\.asp\?url=.*\.mp3" "%%i"') do (
- set "UrlMp3=%%j"
- set "UrlMp3=http://archive.51voa.com/!UrlMp3:~16,-1!"
- title 正在下载 !UrlMp3!
- for /f "delims=_" %%k in ("!UrlMp3!") do set "NameMp3=%%~nk"
- call :DownMp3 "!NameMp3!" "!UrlMp3!"
- )
- title 提取 %%i 的内容
- set over=
- (echo %%~ni&echo.&echo.
- for /f "skip=76 tokens=*" %%j in (%%i) do (
- if "%%j"=="这次的美语三级跳就播送到这里。" set over=yes
- if "%%j"=="Related Articles" set over=yes
- if not defined over echo %%j&echo.
- ))>..\result\%%i
- )
- popd
- exit
-
- :DownMp3
- ..\curl --retry 3 --retry-delay 2 -o "..\result\%~1.mp3" %2
- if not exist "..\result\%~1.mp3" goto DownMp3
- goto :eof
复制代码
|