可干百业,无一精通。
分类: 系统运维
2009-11-21 15:29:04
CODE:这样我们就把该主题第一页的内容保存在了tmp1.txt文件中。
curl -o tmp1.txt
CODE:来伪装成IE浏览器。
-A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
CODE:来保存cookies,用
-D cookie1.txt
CODE:来读取cookies。
-b cookie1.txt
CODE:来伪装成从某个相关联接进入的。 再与CMD中强大的 FOR 命令和变量相结合,加上人类的小小智慧,就可以打造出自动抓取该主题的全部内容的脚本。
-e ""
CODE:将上面脚本保存为 grab.cmd 运行后我们就的到了保存了该主题全部73页内容的 temp.txt 文件。
@echo off
setlocal ENABLEDELAYEDEXPANSION
set last=1
for /l %%i in (1,1,73) do (
echo %%i
curl -b cookie!last!.txt -D cookie%%i.txt -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -e "bbs/showthread.php?t=634659^&page=!last!^&pp=15" -o tmp%%i.txt bbs/showthread.php?t=634659^&page=%%i^&pp=15
set /a last=%%i-1
)
copy tmp*.txt temp.txt
del cookie*.txt
del tmp*.txt
endlocal
CODE:将 temp.txt 的内容一次一行地写入 tmp.txt。
for /f "delims=" %%i in (temp.txt) do ( echo %%i >tmp.txt )
CODE:参数设定以 "<"、">"、"-"、"="、" "来分割一行,
for /f "tokens=1-3 delims=<->= " %%j in (tmp.txt)
CODE:flag=1 代表用户内容开始,flag=0代表用户内容结束。
if "%%j"=="div" if "%%k"=="id" if %%l=="posts" set flag=1
if "%%j"=="start" if "%%k"=="content" if "%%l"=="table" set flag=0
CODE:保存脚本为 merge.cmd 运行后得到合并出的 new.htm 文件就是该主题全部1083帖的内容。
@echo off
setlocal ENABLEDELAYEDEXPANSION
set flag=0
for /f "delims=" %%i in (temp.txt) do (
echo %%i >tmp.txt
for /f "tokens=1-3 delims=<->= " %%j in (tmp.txt) do (
if "%%j"=="div" if "%%k"=="id" if %%l=="posts" set flag=1
if "%%j"=="start" if "%%k"=="content" if "%%l"=="table" set flag=0
for /f "tokens=1-8 delims=< " %%m in (tmp.txt) do (
if not "%%t"=="-->" if not "%%s"=="-->" if not "%%r"=="-->" if not "%%q"=="-->" if not "%%p"=="-->" if not "%%o"=="-->" if not "%%m"=="ECHO" if !flag!==1 echo %%i >>new.htm
)
)
)
del tmp.txt
endlocal