这题有点意思的。花了点时间写,就当练手吧。试试是否符合要求
运行时需要下载好三方工具htox32c.exe sed.exe放置于相同目录;
- @echo off&setlocal enabledelayedexpansion
- title "期刊采集器"
- :start
- set/p qs=请输入电脑爱好者期数:(1-24,按q退出):
- if "%qs%"=="q" goto :eof
- if %qs% gtr 24 echo\输入有误!!,按任意键重新输入!&pause>nul&goto start
- if %qs% leq 0 echo\输入有误!!,按任意键重新输入!&pause>nul&goto start
- if not exist 第!qs!期 md 第!qs!期
- echo;正在下载,请稍等...
- curl -s http://www.qikan.com.cn/MagDetails/1005-0043/2009/%qs%.html | sed -n "/右侧列表内容开始/,/返回新闻时政类期刊按钮开始/p">tmp1.txt
- find "本刊文章版于近期发布,您可以阅读原貌版" tmp1.txt >nul && (echo;本期暂未有文字版&goto :eof)
- sed "s/\/Article\/dnah\//>/g;s/\" target=\"_blank\" class=\"/@</g;s/^s*$//g" tmp1.txt>tmp2.txt
- htox32c /ip tmp2.txt>tmp3.txt 2>nul
- echo;建立目录结构并下载处理内容
- set/a m=0
- for /f "tokens=1,2 delims=@" %%a in (tmp3.txt) do (
- if not "%%a"=="" (
- if "%%b"=="" (set dir1=00!m!_%%a&set/a m+=1,n=0&md "第!qs!期\!dir1!" 2>nul) else (
- set dir2=00!n!_%%b&set/an+=1&md "第!qs!期\!dir1!\!dir2!" 2>nul
- curl -s "http://www.qikan.com.cn/Article/dnah/%%a" | sed -n "/rticleReadConText/,/div/p" | sed "1d;/div/d;s/<br>//g;s/\t//g">"第!qs!期\!dir1!\!dir2!\src.txt"
- :::::以下两行为调试用,可删除
- echo;&echo;======================!%%b===========================================
- echo;[DIR]第!qs!期\!dir1!\!dir2!&echo;&type 第!qs!期\!dir1!\!dir2!\src.txt
- )
- )
- )
复制代码
[ 本帖最后由 inittab 于 2010-3-6 16:20 编辑 ] |