| @echo off |
| :: 功能: |
| :: 按照多种方式下载易读网上的txt小说 |
| :: 实现过程: |
| :: 1、下载指定的某篇小说: |
| :: 首先下载小说首页,通过首页提取出每一章节的下载地址,然后下载每一章节的html文件,转为txt文本,最后按章节顺序提取正文内容,拼合即可; |
| :: 2、根据配置文件下载指定的小说: |
| :: 首先,需要在当前脚本所在的文件夹下存在"要下载的小说列表.txt"文件,文件内容按照 "《小说名》"|小说URL 的格式, |
| :: 一行一条记录加以保存,前后不可有多余的字符;然后,把这个文件复制到 %destination%\tmp\要下载的小说列表\ 目录下, |
| :: 覆盖同名文件,用批处理读取其中的配置,接下来的步骤同1; |
| :: 3、下载指定页码上的所有小说: |
| :: 首先下载指定页面,把其中各篇小说的首页地址提取出来,接下来的步骤同1; |
| :: 4、下载指定页码范围内的所有小说: |
| :: 首先下载指定页码范围内的所有页面,接下来的步骤同1; |
| :: 5、下载全站的所有小说: |
| :: 首先下载全站所有页码上的所有页面,接下来的步骤同1; |
| |
| mode con lines=26 |
| :: 20100406发现易读网的网址发生了变化,屏蔽掉旧网址,启用新网址 |
| :: set www=http://www.yilook.com |
| set www=http://www.yi-look.com |
| set TT=易读网txt小说下载器 |
| set destination=易读txt小说 |
| md "%destination%\tmp\要下载的小说列表\html" 2>nul |
| pushd "%destination%\tmp\要下载的小说列表\html" |
| |
| :Main |
| cls |
| del /a /f /q *.* 2>nul |
| del /a /f /q ..\txt\*.* 2>nul |
| title %TT% |
| echo.&echo. |
| echo 本程序可以按照以下方式下载易读网上的txt小说 |
| echo. |
| echo 易读网首页:%www% |
| echo. |
| echo 1、下载指定的某篇小说 |
| echo. |
| echo 2、根据配置文件下载指定的小说 |
| echo. |
| echo 3、下载指定页码上的所有小说 |
| echo. |
| echo 4、下载指定页码范围内的所有小说 |
| echo. |
| echo 5、下载全站的所有小说 |
| echo. |
| echo X、退出 |
| set choice= |
| call :line |
| set /p choice= 请输入指定功能代码(1/2/3/4/5/X): |
| if not defined choice goto Main |
| if /i "%choice:~0,1%"=="X" exit |
| set "choice=%choice:~0,1%" |
| if "%choice%"=="1" goto DownGivenNovel |
| if "%choice%"=="2" goto DownGivenNovels |
| if "%choice%"=="3" goto DownGivenPage |
| if "%choice%"=="4" goto DownGivenPages |
| if "%choice%"=="5" goto DownAllPages |
| goto Main |
| |
| :DownGivenNovel |
| cls |
| title %TT%-指定网址 |
| echo.&echo. |
| echo 请在易读网中找到某篇小说的URL,复制后粘贴到本窗口中使用。 |
| echo. |
| echo 比如,《汉朝的那些事儿》,其URL地址为: |
| echo. |
| echo %www%/art_7200_8093.html |
| echo. |
| echo 把以上URL粘贴到本窗口即可下载《汉朝那些事儿》 |
| echo. |
| echo 粘贴方法:鼠标点击右键,然后粘贴,不能使用快捷键Ctrl+V |
| call :line |
| echo 请在下面输入小说的URL地址: |
| echo. |
| set URL= |
| set /p URL= |
| if not defined URL goto DownGivenNovel |
| if /i "%URL:~0,1%"=="X" exit |
| if /i "%URL:~0,1%"=="M" goto Main |
| curl -O %URL% |
| htox32c /IP /O0 *.html |
| for /f "tokens=3" %%i in ('findstr "TITLE" "*.txt"') do echo "%%i"^|%URL%>..\要下载的小说列表.txt |
| goto DownNovel |
| |
| :DownGivenNovels |
| cls |
| title %TT%-配置下载文件清单 |
| echo.&echo. |
| echo 请确认当前目录下存在"要下载的小说列表.txt"文件 |
| echo. |
| echo 并且该文件中的内容为 "《小说名》"^|小说目录页URL 的格式 |
| echo. |
| echo 一行一条记录,前后不可有多余字符。如: |
| echo. |
| echo "《寻人启事》"^|%www%/art_7238_6170.html |
| echo. |
| echo 若不满足如上条件,请自行配置好后方可使用本功能 |
| call :line |
| echo. |
| set next= |
| set /p next= 要继续下一步吗?(Y/N): |
| if not exist ..\..\..\..\要下载的小说列表.txt goto DownGivenNovels |
| if not defined next goto DownGivenNovels |
| set "next=%next:~0,1%" |
| if /i "%next%"=="X" exit |
| if /i "%next%"=="M" goto Main |
| if /i "%next%"=="Y" ( |
| copy /y ..\..\..\..\要下载的小说列表.txt ..\ |
| goto DownNovel |
| ) |
| goto DownGivenNovels |
| |
| :DownGivenPage |
| cls |
| title %TT%-指定页码 |
| echo.&echo.&echo.&echo. |
| echo 您可以指定某一页码,本脚本将下载易读网上这一页内 |
| echo. |
| echo 列出的所有小说 |
| echo. |
| echo 如:输入3,将下载这一页面所列出的所有小说: |
| echo. |
| echo %www%/artlist_3.html |
| call :line |
| set page= |
| set /p page= 请输入指定页码: |
| if not defined page goto DownGivenPage |
| if /i "%page:~0,1%"=="X" exit |
| if /i "%page:~0,1%"=="M" goto Main |
| curl -O %www%/artlist_%page%.html |
| goto HTMLtoTXT |
| |
| :DownGivenPages |
| cls |
| title %TT%-指定页码范围 |
| echo.&echo. |
| echo 您可以指定某一页码范围,本脚本将下载易读网上这些页内 |
| echo. |
| echo 列出的所有小说 |
| echo. |
| echo 注意:起止页码必须用半角状态下的短横杠连接。 |
| echo. |
| echo 如:输入 3-5,将下载易读网上下列页面内列出的所有小说: |
| echo. |
| echo %www%/artlist_3.html |
| echo %www%/artlist_4.html |
| echo %www%/artlist_5.html |
| call :line |
| set pages= |
| set /p pages= 请输入指定页码的范围(如3-5): |
| if not defined pages goto DownGivenPages |
| if /i "%pages%"=="X" exit |
| if /i "%pages%"=="M" goto Main |
| curl -O "%www%/artlist_[%pages%].html" |
| goto HTMLtoTXT |
| |
| :DownAllPages |
| cls |
| title %TT%-下载全站小说 |
| curl -O %www%/artlist_1.html |
| htox32c /IP /O0 /U1+4 artlist_1.html |
| cls |
| for /f "tokens=6" %%i in ('findstr /i "第.*页" artlist_1.txt') do ( |
| curl -O "%www%/artlist_[2-%%i].html" |
| ) |
| |
| :HTMLtoTXT |
| cls |
| title %TT%-网页转换为txt |
| htox32c /IP /O0 /U1+4 *.html |
| md ..\txt 2>nul |
| del /a /f /q ..\txt\*.* |
| move *.txt ..\txt>nul |
| |
| :PickupList |
| cls |
| echo.&echo 正在生成要下载的小说列表,请稍候... |
| cd.>..\要下载的小说列表.txt |
| for %%i in (..\txt\*.txt) do ( |
| title %TT%-生成下载列表_%%~nxi |
| for /f "delims=<'> tokens=1,2" %%j in ('findstr /i "《.*》" "%%i"') do ( |
| echo "%%j"^|%www%/%%k>>..\要下载的小说列表.txt |
| ) |
| ) |
| |
| :DownNovel |
| cls |
| title %TT%-下载小说 |
| echo.&echo. |
| echo 正在下载小说,请稍候... |
| md ..\..\..\整理结果 2>nul |
| :: del /a /f /q ..\..\..\整理结果\*.* |
| :: rd /q /s ..\..\已下载小说的原始文档 |
| md ..\..\已下载小说的原始文档 2>nul |
| for /f "delims=| tokens=1,2" %%i in (..\要下载的小说列表.txt) do ( |
| curl --create-dirs -o "..\..\已下载小说的原始文档\%%~i\index.html" "%%~j" |
| htox32c /IP /O0 /U1+4 "..\..\已下载小说的原始文档\%%~i\index.html" |
| cls |
| set lastchapter=1 |
| for /f "delims=' tokens=1,2" %%x in ('findstr /i "第.*节" "..\..\已下载小说的原始文档\%%~i\index.txt"') do ( |
| call :DownHTML "%%~i" "%%~x" "%%~y" |
| ) |
| pushd "..\..\已下载小说的原始文档\%%~i\html" |
| htox32c /IP /O0 *.html |
| popd |
| md "..\..\已下载小说的原始文档\%%~i\txt" 2>nul |
| move "..\..\已下载小说的原始文档\%%~i\html\*.txt" "..\..\已下载小说的原始文档\%%~i\txt" |
| call :PickupTXT "%%~i" |
| move "..\..\已下载小说的原始文档\%%~i\%%i.txt" ..\..\..\整理结果 |
| ) |
| title %TT%-整理完毕 |
| echo 整理完毕 |
| pause |
| goto Main |
| |
| :DownHTML |
| :: 下载小说各章节页面文件 |
| set "chapter=%~2" |
| set "chapter=%chapter:*第=%" |
| set "chapter=%chapter:~0,-2%" |
| title %TT%-正在下载 "%~1_第 %chapter% 节" |
| if %lastchapter% lss %chapter% set lastchapter=%chapter% |
| curl --create-dirs -o "..\..\已下载小说的原始文档\%~1\html\%chapter%.html" "%www%/%~3" |
| goto :eof |
| |
| :PickupTXT |
| :: 按先后顺序提取各章节页面正文并合并之 |
| cls |
| title %TT%-正在提取 %1 |
| echo.&echo 正在合并各章节,请稍候... |
| cd.>"..\..\已下载小说的原始文档\%~1\%~1.txt" |
| for /l %%i in (1,1,%lastchapter%) do ( |
| title %TT%-正在处理 "%~1\%%i.html" |
| findstr /ibc:" " "..\..\已下载小说的原始文档\%~1\txt\%%i.txt">>"..\..\已下载小说的原始文档\%~1\%~1.txt" |
| echo.>>"..\..\已下载小说的原始文档\%~1\%~1.txt" |
| ) |
| goto :eof |
| |
| :line |
| echo. |
| echo ________________________________________________________________________________ |
| if defined choice ( |
| echo 退出 X 返回主界面 M |
| ) |
| echo.&echo. |
| goto :eofCOPY |