精品技术论坛

精品技术论坛 (https://bbs.et8.net/bbs/index.php)
-   『软件使用』 (https://bbs.et8.net/bbs/forumdisplay.php?f=17)
-   -   【原创】批量下载漫画图片 (https://bbs.et8.net/bbs/showthread.php?t=664489)

hitme 2005-06-02 10:48:55

【原创】批量下载漫画图片
 
1 个附件
述求:http://bbs.et8.net/bbs/showthread.php?t=664340

开工:

1.找文件名规律,gif文件名有两位随机位,碰壁
2.查看htm文件,http://www.wulffmorgenthaler.com/thestrip.asp?cDay=09&cMonth=05&cYear=2005,带年月日,有规律真好 :cool:
3.列表年月日,备用
4.出动curl,下载htm,分析htm,下载gif
5.收工

保存为get_gif.cmd运行,自行修改红色部分,现表示下载前10天的gif文件

代码:

@echo off

::/ * list date */

set /a n=0
:loop
set /a n+=1

>t_day.vbs  echo ' Yesterday.vbs,  Version 1.01                         
>>t_day.vbs echo '                                                     
>>t_day.vbs echo ' Written by Rob van der Woude                       
>>t_day.vbs echo ' http://www.robvanderwoude.com                       
>>t_day.vbs echo '                                                   
>>t_day.vbs echo ' Calculate yesterday's date                         
>>t_day.vbs echo    dtmYesterday = DateAdd("d",-%n%,Date)     
>>t_day.vbs echo '                                                     
>>t_day.vbs echo ' Get yesterday's year                               
>>t_day.vbs echo    strYear      = DatePart("yyyy",dtmYesterday)       
>>t_day.vbs echo '                                                   
>>t_day.vbs echo ' Get yesterday's month, add leading zero if necessary
>>t_day.vbs echo    If DatePart("m",dtmYesterday) ^< 10 Then           
>>t_day.vbs echo            strMonth = 0 ^& DatePart("m",dtmYesterday)     
>>t_day.vbs echo    Else                                               
>>t_day.vbs echo            strMonth = DatePart("m",dtmYesterday)         
>>t_day.vbs echo    End If                                             
>>t_day.vbs echo '                                                     
>>t_day.vbs echo ' Get yesterday's day, add leading zero if necessary 
>>t_day.vbs echo    If DatePart("d",dtmYesterday) ^< 10 Then           
>>t_day.vbs echo          strDay = 0 ^& DatePart("d",dtmYesterday)       
>>t_day.vbs echo    Else                                             
>>t_day.vbs echo          strDay = DatePart("d",dtmYesterday)           
>>t_day.vbs echo    End If                                             
>>t_day.vbs echo '                                                   
>>t_day.vbs echo ' Format output for yesterday                         
>>t_day.vbs echo  strYest = strYear ^& strMonth ^& strDay           
>>t_day.vbs echo '                                                   
>>t_day.vbs echo ' echo                                               
>>t_day.vbs echo Wscript.echo( strYest ) 
                           
for /f "delims=" %%i in ('cscript.exe //nologo t_day.vbs') do echo %%i>>tmp.txt

if %n% neq 10 goto :loop


::/ * get htm * /
for /f "delims=" %%i in (tmp.txt) do (
                                setlocal ENABLEDELAYEDEXPANSION
                                set n=%%i
                                curl -o !n!.htm http://www.wulffmorgenthaler.com/thestrip.asp?cDay=!n:~-2!^&cMonth=!n:~4,2!^&cYear=!n:~0,4!
                                endlocal
)

::/ * get gif * /
for /f "tokens=4 delims==" %%i in ('findstr "log" *.htm') do (
                                setlocal ENABLEDELAYEDEXPANSION
                                set m=%%i
                                curl -o !m:~5,-5! http://www.wulffmorgenthaler.com/!m:~1,-5!
                                endlocal
)

::/ * clean * /
del *.htm tmp.txt 2>nul


参考资料
【原创】教你学用CURL --- 命令行浏览器
=========================================================
下载
curl

lyh728 2005-06-02 11:30:30

狂人,啊啊啊

ping 2005-06-02 11:31:29

就知道批处理的咚咚,找楼主没错了,真快。

MacOS 2005-06-02 12:29:39

引用:

作者: hitme
述求:http://bbs.et8.net/bbs/showthread.php?t=664340

开工:

1.找文件名规律,gif文件名有两位随机位,碰壁
2.查看htm文件,http://www.wulffmorgenthaler.com/thestrip.asp?cDay=09&cMonth=05&cYear=2005,带年月日,有规律真好 :cool:
3.列表年月日,备用
4.出动curl,下载htm,分析htm,下载gif
5.收工

保存为get_gif.cmd运行,自行修改红色部分,现表示下载前10天的gif文件

代码:

@echo off

::/ * list date */

set /a n=0
:loop
set /a n+=1

>t_day.vbs  echo ' Yesterday.vbs,  Version 1.01                         
>>t_day.vbs echo '                                                     
>>t_day.vbs echo ' Written by Rob van der Woude                       
>>t_day.vbs echo ' http://www.robvanderwoude.com                       
>>t_day.vbs echo '                                                   
>>t_day.vbs echo ' Calculate yesterday's date                         
>>t_day.vbs echo    dtmYesterday = DateAdd("d",-%n%,Date)     
>>t_day.vbs echo '                                                     
>>t_day.vbs echo ' Get yesterday's year                               
>>t_day.vbs echo    strYear      = DatePart("yyyy",dtmYesterday)       
>>t_day.vbs echo '                                                   
>>t_day.vbs echo ' Get yesterday's month, add leading zero if necessary
>>t_day.vbs echo    If DatePart("m",dtmYesterday) ^< 10 Then           
>>t_day.vbs echo            strMonth = 0 ^& DatePart("m",dtmYesterday)     
>>t_day.vbs echo    Else                                               
>>t_day.vbs echo            strMonth = DatePart("m",dtmYesterday)         
>>t_day.vbs echo    End If                                             
>>t_day.vbs echo '                                                     
>>t_day.vbs echo ' Get yesterday's day, add leading zero if necessary 
>>t_day.vbs echo    If DatePart("d",dtmYesterday) ^< 10 Then           
>>t_day.vbs echo          strDay = 0 ^& DatePart("d",dtmYesterday)       
>>t_day.vbs echo    Else                                             
>>t_day.vbs echo          strDay = DatePart("d",dtmYesterday)           
>>t_day.vbs echo    End If                                             
>>t_day.vbs echo '                                                   
>>t_day.vbs echo ' Format output for yesterday                         
>>t_day.vbs echo  strYest = strYear ^& strMonth ^& strDay           
>>t_day.vbs echo '                                                   
>>t_day.vbs echo ' echo                                               
>>t_day.vbs echo Wscript.echo( strYest ) 
                           
for /f "delims=" %%i in ('cscript.exe //nologo t_day.vbs') do echo %%i>>tmp.txt

if %n% neq 10 goto :loop


::/ * get htm * /
for /f "delims=" %%i in (tmp.txt) do (
                                setlocal ENABLEDELAYEDEXPANSION
                                set n=%%i
                                curl -o !n!.htm http://www.wulffmorgenthaler.com/thestrip.asp?cDay=!n:~-2!^&cMonth=!n:~4,2!^&cYear=!n:~0,4!
                                endlocal
)

::/ * get gif * /
for /f "tokens=4 delims==" %%i in ('findstr "log" *.htm') do (
                                setlocal ENABLEDELAYEDEXPANSION
                                set m=%%i
                                curl -o !m:~5,-5! http://www.wulffmorgenthaler.com/!m:~1,-5!
                                endlocal
)

::/ * clean * /
del *.htm tmp.txt 2>nul


参考资料
【原创】教你学用CURL --- 命令行浏览器
=========================================================
下载
curl

直接用VBS算啦

rijet 2005-06-02 12:29:58

偶像!!狂谢!!正想怎么下载!

闪亮 2005-06-02 12:32:25

楼主。命令行太强了。

hitme 2005-06-02 12:49:33

引用:

作者: MacOS
直接用VBS算啦

vbs不会扼。。。
东拼西凑。。四不象了
bs我吧,hitme最好

C.K dEsIgn 2005-06-02 13:32:57

引用:

作者: hitme
述求:http://bbs.et8.net/bbs/showthread.php?t=664340

开工:

1.找文件名规律,gif文件名有两位随机位,碰壁
2.查看htm文件,http://www.wulffmorgenthaler.com/thestrip.asp?cDay=09&cMonth=05&cYear=2005,带年月日,有规律真好 :cool:
3.列表年月日,备用
4.出动curl,下载htm,分析htm,下载gif
5.收工

保存为get_gif.cmd运行,自行修改红色部分,现表示下载前10天的gif文件

代码:

@echo off

::/ * list date */

set /a n=0
:loop
set /a n+=1

>t_day.vbs  echo ' Yesterday.vbs,  Version 1.01                         
>>t_day.vbs echo '                                                     
>>t_day.vbs echo ' Written by Rob van der Woude                       
>>t_day.vbs echo ' http://www.robvanderwoude.com                       
>>t_day.vbs echo '                                                   
>>t_day.vbs echo ' Calculate yesterday's date                         
>>t_day.vbs echo    dtmYesterday = DateAdd("d",-%n%,Date)     
>>t_day.vbs echo '                                                     
>>t_day.vbs echo ' Get yesterday's year                               
>>t_day.vbs echo    strYear      = DatePart("yyyy",dtmYesterday)       
>>t_day.vbs echo '                                                   
>>t_day.vbs echo ' Get yesterday's month, add leading zero if necessary
>>t_day.vbs echo    If DatePart("m",dtmYesterday) ^< 10 Then           
>>t_day.vbs echo            strMonth = 0 ^& DatePart("m",dtmYesterday)     
>>t_day.vbs echo    Else                                               
>>t_day.vbs echo            strMonth = DatePart("m",dtmYesterday)         
>>t_day.vbs echo    End If                                             
>>t_day.vbs echo '                                                     
>>t_day.vbs echo ' Get yesterday's day, add leading zero if necessary 
>>t_day.vbs echo    If DatePart("d",dtmYesterday) ^< 10 Then           
>>t_day.vbs echo          strDay = 0 ^& DatePart("d",dtmYesterday)       
>>t_day.vbs echo    Else                                             
>>t_day.vbs echo          strDay = DatePart("d",dtmYesterday)           
>>t_day.vbs echo    End If                                             
>>t_day.vbs echo '                                                   
>>t_day.vbs echo ' Format output for yesterday                         
>>t_day.vbs echo  strYest = strYear ^& strMonth ^& strDay           
>>t_day.vbs echo '                                                   
>>t_day.vbs echo ' echo                                               
>>t_day.vbs echo Wscript.echo( strYest ) 
                           
for /f "delims=" %%i in ('cscript.exe //nologo t_day.vbs') do echo %%i>>tmp.txt

if %n% neq 10 goto :loop


::/ * get htm * /
for /f "delims=" %%i in (tmp.txt) do (
                                setlocal ENABLEDELAYEDEXPANSION
                                set n=%%i
                                curl -o !n!.htm http://www.wulffmorgenthaler.com/thestrip.asp?cDay=!n:~-2!^&cMonth=!n:~4,2!^&cYear=!n:~0,4!
                                endlocal
)

::/ * get gif * /
for /f "tokens=4 delims==" %%i in ('findstr "log" *.htm') do (
                                setlocal ENABLEDELAYEDEXPANSION
                                set m=%%i
                                curl -o !m:~5,-5! http://www.wulffmorgenthaler.com/!m:~1,-5!
                                endlocal
)

::/ * clean * /
del *.htm tmp.txt 2>nul


参考资料
【原创】教你学用CURL --- 命令行浏览器
=========================================================
下载
curl



真强啊, 真的可以下... 多谢多谢.

就是速度好慢, 有没有什么办法?

另外, hitme能不能把这个再改进一下??

现在好像得先下载好设置的天数的HTM, 然后才一个个下GIF, 有没有办法让他下一个HTM就下这个HTM的GIF, 然后就直接删除这个HTM?
否则要抓整站的话,下了半天还是HTM啊... 另外打开这个目录肯定有几千个文件机器都要死了...

现在是设置为10天的, 如果想下载所有的, 应该怎么设??
想了半天还是问一下好, 万一设错了, 用这东西又得重新来过了...

qmsrobin 2005-06-02 13:35:28

学习中。。。

hitme 2005-06-02 14:35:39

引用:

作者: C.K dEsIgn
真强啊, 真的可以下... 多谢多谢.

就是速度好慢, 有没有什么办法?

另外, hitme能不能把这个再改进一下??

现在好像得先下载好设置的天数的HTM, 然后才一个个下GIF, 有没有办法让他下一个HTM就下这个HTM的GIF, 然后就直接删除这个HTM?
否则要抓整站的话,下了半天还是HTM啊... 另外打开这个目录肯定有几千个文件机器都要死了...

现在是设置为10天的, 如果想下载所有的, 应该怎么设??
想了半天还是问一下好, 万一设错了, 用这东西又得重新来过了...

好,把get htm 和get gif段落嵌套起来。get htm->get gif->del htm
代码:

::/ * get htm&gif * /
for /f "delims=" %%i in (tmp.txt) do (
                                setlocal ENABLEDELAYEDEXPANSION
                                set n=%%i
                                curl -o !n!.htm http://www.wulffmorgenthaler.com/thestrip.asp?cDay=!n:~-2!^&cMonth=!n:~4,2!^&cYear=!n:~0,4!
                               
                                for /f "tokens=4 delims==" %%j in ('findstr "log" *.htm') do (
                                set m=%%j
                                curl -o !m:~5,-5! http://www.wulffmorgenthaler.com/!m:~1,-5!
                                )
                                del *.htm
                                endlocal
)

好象是每日一图,设为1000好了
可以分次进行啊
0->100
101->200
...

C.K dEsIgn 2005-06-02 14:46:26

引用:

作者: hitme
好,把get htm 和get gif段落嵌套起来。get htm->get gif->del htm
代码:

::/ * get htm&gif * /
for /f "delims=" %%i in (tmp.txt) do (
                                setlocal ENABLEDELAYEDEXPANSION
                                set n=%%i
                                curl -o !n!.htm http://www.wulffmorgenthaler.com/thestrip.asp?cDay=!n:~-2!^&cMonth=!n:~4,2!^&cYear=!n:~0,4!
                               
                                for /f "tokens=4 delims==" %%j in ('findstr "log" *.htm') do (
                                set m=%%j
                                curl -o !m:~5,-5! http://www.wulffmorgenthaler.com/!m:~1,-5!
                                )
                                del *.htm
                                endlocal
)

好象是每日一图,设为1000好了

好像这是起始, 不知道有没有用,还是设为1000?? http://www.wulffmorgenthaler.com/thestrip.asp?cDay=24&cMonth=05&cYear=2002

hitme能否把完整修改好的再发一个附件上来??

hitme 2005-06-02 14:49:10

1 个附件
引用:

作者: C.K dEsIgn
好像这是起始 http://www.wulffmorgenthaler.com/thestrip.asp?cDay=24&cMonth=05&cYear=2002

hitme能否把完整修改好的再发一个附件上来??

懒惰啊,打倒 ~:D
不会vbs,列表date部分效率极低,等sammy来改.. :blush;

C.K dEsIgn 2005-06-02 14:50:35

引用:

作者: hitme
懒惰啊,打倒 ~:D

不是懒惰,是怕弄错, 而且不懂程序啊, 多谢, 设置成1000没问题吧

05-24-2002开始

hitme 2005-06-02 14:52:17

引用:

作者: C.K dEsIgn
不是懒惰,是怕弄错, 而且不懂程序啊, 多谢, 设置成1000没问题吧

05-24-2002开始

3年零几天,差不多1100

C.K dEsIgn 2005-06-02 14:55:14

速度好慢, 龟速执行中。... 多谢 hitme


所有时间均为北京时间, 现在的时间是 19:31:50.

本论坛带宽由迅通网络提供
SSL证书由TrustAsia提供

Copyright © 2000 - 2019 ClassiClub Forum All Rights Reserved.
粤ICP备09123456号