. : : ClassiClub ForuM : : .

会员中心 论坛帮助 日历事件 标记论坛已读
返回   精品技术论坛 » 技术论坛 » 『软件使用』

『软件使用』: 电脑软件推荐, 电脑软件使用, 经验分享



发表新主题 关闭主题
 
主题工具
ping
 
ping 的头像
热心会员
 
资 料:
注册日期: Feb 2002
帖子: 1,945 声望值: 6
精华: 0,解答: 2
#1 旧 2011-08-27, 20:12:22 默认 【求助】怎样批量下载这个论坛的图片?
ping 当前离线  

几年前新房装修,网上四处搜寻装修效果图以及相关资料以作参考,最后在篱笆的一个子版块上找到不少人家装修过程中的图文记录,于是想把论坛里装修日记的图片整体收集下来,当时在坛子发帖求助,也得到hitme等几位坛友的帮助,收集到了部分图片。但是现在几年过去了,以前收集的图片似乎有些老,想重新收集一次,可惜网站改版后原来的代码已经没用了……

请问批处理达人,如何批量把论坛下的图片按日期目录归类保存下来?

网址:_http://bbs.libaclub.com/f_14.htm

感激不尽!


有多少能力 就办多少事!
namejm
 
namejm 的头像
超级会员
 
资 料:
注册日期: Apr 2009
帖子: 1,363 声望值: 3
精华: 21,解答: 83
#2 旧 2011-08-28, 00:50:19 默认
namejm 当前离线  

只是需要图片还是需要原样保留图文?
是需要每个帖子里的图还是指定某个范围的图?


TotalCommder、EveryThing、batch、AutoHotKey、EverEdit
精通Word、Excel、PPT的安装与卸载
熟练掌握VB、C++、SQL的拼读与缩写
ping
 
ping 的头像
热心会员
 
资 料:
注册日期: Feb 2002
帖子: 1,945 声望值: 6
精华: 0,解答: 2
#3 旧 2011-08-28, 01:09:38 默认
ping 当前离线  

只要图片就好,范围就是子论坛下所有帖子内的图片。
比如这张图片
_http://clubfiles.libaclub.com/2011/08/16/21/33033659.jpg
我想保存的时候放在201108的文件夹,或者至少可以得到按照日期排序的图片url,这样我就知道哪些是新照片了。
namejm
 
namejm 的头像
超级会员
 
资 料:
注册日期: Apr 2009
帖子: 1,363 声望值: 3
精华: 21,解答: 83
#4 旧 2011-08-28, 01:18:06 默认
namejm 当前离线  

粗粗查看了一下
帖子里发的jpg文件路径居然是经过转换后才显示出来的
在网页源文件中根本没法直接获取
看不懂JS
第一回合就败下阵来鸟
——只要把这个转换规则搞懂了,其他的问题倒是很好办
ping
 
ping 的头像
热心会员
 
资 料:
注册日期: Feb 2002
帖子: 1,945 声望值: 6
精华: 0,解答: 2
#5 旧 2011-08-28, 01:18:59 默认
ping 当前离线  

这是原先已经失效的代码,我修改成现在的地址仍旧提取不到图片链接,水平有限啊。

代码:
@echo off
curl -o #1.htm http://www.51tuangou.com/bbs/forumdisplay.php?^&forumid=8^&daysprune=1000^&sortorder=^&sortfield=lastpost^&perpage=30^&pagenumber=[1-78]

setlocal ENABLEDELAYEDEXPANSION
for /f "tokens=3-5 delims==" %%i in ('findstr "images/newwin" *.htm') do (
				set n=%%i
				set m=%%j
				set l=%%k
				echo http://www.51tuangou.com/bbs/!n:~1!=!m!=!l:~0,-5!>>tmp1.txt
)
endlocal

for /f "delims=" %%i in (tmp1.txt) do (
		curl %%i|findstr /i /r "clubfiles.51tuangou.com"|findstr /i "jpg">>tmp2.txt
)

setlocal ENABLEDELAYEDEXPANSION
for /f "tokens=2 delims==" %%i in (tmp2.txt) do (
			set n=%%i
			echo !n:~1,-8!>>list.txt
)
endlocal		

del tmp*.txt
start list.txt
namejm
 
namejm 的头像
超级会员
 
资 料:
注册日期: Apr 2009
帖子: 1,363 声望值: 3
精华: 21,解答: 83
#6 旧 2011-08-28, 02:11:22 默认
namejm 当前离线  

用批处理来抓网页数据
一般需要用到curl或wget
首先要把html文件下载到本机
然后从html文件中分析各种链接
再顺藤摸瓜
现在这个论坛的防止批量抓取图片真实url的措施做得非常到位
从html源文件中没法抓到附件中图片的真实下载地址
而是把网页中的相关数据通过js来转换,再在浏览器中显示出来
看不懂那些js都是什么意思
或许真实的url首先在网站数据库中经过了一番映射之后
再通过js来查询也说不定
我整理了一份“图片真实url与网页源文件中相关代码的对应关系”的列表
并附上相关的js源文件
希望有懂的人来分析一下真实url该如何从网页源文件中获取
ping
 
ping 的头像
热心会员
 
资 料:
注册日期: Feb 2002
帖子: 1,945 声望值: 6
精华: 0,解答: 2
#7 旧 2011-08-28, 10:20:37 默认
ping 当前离线  

看似规律的图片地址原来也内藏机关啊!主题通过JS控制再输出htm,图片有没有经过数据库映射搞不清楚,

我早上看了一下你传的对应关系表,比如这三张图片
代码:
http://clubfiles.libaclub.com/2010/10/07/00/29553011.jpg
<SCRIPT LANGUAGE="JavaScript">xcount(">@P<//////////////附件//////////////>@P<>koe\"qpa?jvvr8--anw`dkngq,nk`canw`,amo-0232-32-25-22-0;771233,hre\"`mpfgp?2<");</SCRIPT></p>

http://clubfiles.libaclub.com/2010/10/07/00/29553062.jpg
<SCRIPT LANGUAGE="JavaScript">xcount(">@P<//////////////附件//////////////>@P<>koe\"qpa?jvvr8--anw`dkngq,nk`canw`,amo-0232-32-25-22-0;771240,hre\"`mpfgp?2<");</SCRIPT></p>

http://clubfiles.libaclub.com/2010/10/07/00/29553082.jpg
<SCRIPT LANGUAGE="JavaScript">xcount(">@P<//////////////附件//////////////>@P<>koe\"qpa?jvvr8--anw`dkngq,nk`canw`,amo-0232-32-25-22-0;7712:0,hre\"`mpfgp?2<");</SCRIPT></p>
基本是序号不同,这个js会不会只负责控制主题显示格式呢?

我再打开通过curl download到的子版块分页htm文件看了一下,应该是可以通过批处理拿下所有分页主题的。

拿3个置顶的主题举例,基本可以得到子版块下各主题的真实链接:
代码:
<a href="member.php?sessionhash=&uid=4219483" class=black target=_blank>牵手陌陌 </a><br>
<a href=topic.php?sessionhash=&topicId=5678065&page=3&forumId=14&goto=lastpost class=black target=_blank class=postdate title='2011-08-17 17:35'>08-17 17:35</a>

<a href="member.php?sessionhash=&uid=4218049" class=black target=_blank>小雅爱美丽 </a><br>
<a href=topic.php?sessionhash=&topicId=5707595&page=5&forumId=14&goto=lastpost class=black target=_blank class=postdate title='2011-08-24 15:01'>08-24 15:01</a>

<a href="member.php?sessionhash=&uid=4224108" class=black target=_blank>07558340 </a><br>
<a href=topic.php?sessionhash=&topicId=5678079&page=5&forumId=14&goto=lastpost class=black target=_blank class=postdate title='2011-08-24 19:40'>08-24 19:40</a>
_http://bbs.libaclub.com/topic.php?sessionhash=&topicId=5678065&page=3
_http://bbs.libaclub.com/topic.php?sessionhash=&topicId=5707595&page=5
_http://bbs.libaclub.com/topic.php?sessionhash=&topicId=5678079&page=5

这个算不算也是一个思路?至于主题内图片做了怎样的防抓取措施,我也是看不明白。得到这几个链接怎样用代码体现下载到主题,我搞不定 没法往下分析。。。
ping
 
ping 的头像
热心会员
 
资 料:
注册日期: Feb 2002
帖子: 1,945 声望值: 6
精华: 0,解答: 2
#8 旧 2011-08-28, 10:36:30 默认
ping 当前离线  

又单独下了一个主题的htm,原来上面我看到的只是门外,进到屋里才发现真正的机关。


代码:
<SCRIPT LANGUAGE="JavaScript">xcount(">@P<//////////////附件//////////////>@P<>koe\"qpa?jvvr8--anw`dkngq,nk`canw`,amo-0233-2:-27-30-10;3;127,hre\"`mpfgp?2<");</SCRIPT>
图片都通过JS代码控制显示,挠头,面壁~~
shiyu46
 
shiyu46 的头像
高级会员
 
资 料:
注册日期: Sep 2001
帖子: 558 声望值: 3
精华: 2,解答: 5
#9 旧 2011-08-28, 12:46:51 默认
shiyu46 当前离线  

如果有个对应的链接表基本上无解了- -
不死鸟
 
不死鸟 的头像
热心会员
 
资 料:
注册日期: Sep 2002
帖子: 6,533 声望值: 5
精华: 1,解答: 24
#10 旧 2011-08-28, 23:44:33 默认
不死鸟 当前离线  

url只是用一个简单的函数做了一下字符转换。
PHP 代码:
    function xcount(xh){
        var 
xc="",xd=new Array(),xe="",xf=0;
        for(
i=0;i<xh.length;i++){ 
            
xa=xh.charCodeAt(i);
            if(
xa<128xa=xa^2;      
            
xe+=String.fromCharCode(xa); 
            if(
xe.length>80){          
                
xd[xf++]=xe;xe="";       
            }                       
        }                       
        
xc=xd.join("")+xe;    
        
document.write(xc);  
    } 
转换函数就是上面这个,其实是把加密过的字串中unicode编码小于128的字符(就是键盘上能直接敲出来的英文字符)和2做了一下位异或,所以其实你找到
代码:
<SCRIPT LANGUAGE="JavaScript">xcount(">@P<//////////////附件//////////////>@P<>koe\"qpa?jvvr8--anw`dkngq,nk`canw`,amo-0232-32-25-22-0;771233,hre\"`mpfgp<?2");</SCRIPT></p>
这样的东西,红字的部分应该都是一样的,把它处理掉,剩下非红的部分做一下转码就会得到真实的URL的。
位异或这个操作符批处理里面也是有的,所以这个转换并不是很大的问题,不过我不太熟批处理的东西,所以对于处理其他的东西就比较郁闷了,看看有没有其他的批处理高手进来帮你改一下吧。

此帖于 2011-08-29 04:31:01 被 不死鸟 编辑. .


我出生时很乖,长大后很帅,MM见我就不拽,媚眼使劲向我抛,可惜我有一点坏,向来是玩过就甩,所以至今单身你勿奇怪,想追帅哥的美女请赶快…… ^o^ !
----------------------------------------------
无从了解凤凰涅磐时的痛苦,但我清楚那是成长路上不可少的经历!
ping
 
ping 的头像
热心会员
 
资 料:
注册日期: Feb 2002
帖子: 1,945 声望值: 6
精华: 0,解答: 2
#11 旧 2011-08-28, 23:56:23 默认
ping 当前离线  

感谢不死鸟解毒,看来复活有望?!召唤namejm发功,板凳翘首~~
namejm
 
namejm 的头像
超级会员
 
资 料:
注册日期: Apr 2009
帖子: 1,363 声望值: 3
精华: 21,解答: 83
#12 旧 2011-08-29, 02:19:14 默认
namejm 当前离线  

10楼不死鸟从原理上揭示了转码规律
给了我不少提示
摸索了一下
终于找到了一个更加简洁的方法
经过测试已经成功
代码将在今天晚些时候出炉
现在想问下楼主
你所说的按照日期归类
是按照"年月日"一个文件夹呢
还是按照"年\月\日"这样建立三级文件夹?
或者还是其他方式?
请给个明确的说法
不死鸟
 
不死鸟 的头像
热心会员
 
资 料:
注册日期: Sep 2002
帖子: 6,533 声望值: 5
精华: 1,解答: 24
#13 旧 2011-08-29, 04:27:56 默认
不死鸟 当前离线  

LZ前面说用“年月”做目录,红字部分后半段位置弄错了,改了一下。
ping
 
ping 的头像
热心会员
 
资 料:
注册日期: Feb 2002
帖子: 1,945 声望值: 6
精华: 0,解答: 2
#14 旧 2011-08-29, 09:06:51 默认
ping 当前离线  

引用:
作者: namejm 查看帖子
10楼不死鸟从原理上揭示了转码规律
给了我不少提示
摸索了一下
终于找到了一个更加简洁的方法
经过测试已经成功
代码将在今天晚些时候出炉
现在想问下楼主
你所说的按照日期归类
是按照"年月日"一个文件夹呢
还是按照"年\月\日"这样建立三级文件夹?
或者还是其他方式?
请给个明确......
按年月日建立文件夹即可。
如这张照片:
_http://clubfiles.libaclub.com/2011/08/16/21/33033659.jpg
……

下载下来以后 2011年8月16日的都放到这个文件夹,这样下载到的图片可以得到很好的归类 不用人工筛选,就是这个想法。

刚注意到namejm与不死鸟两位的回帖时间,非常感动,注意休息!闲暇时再看也不妨哦。

此帖于 2011-08-29 09:09:54 被 ping 编辑. .
namejm
 
namejm 的头像
超级会员
 
资 料:
注册日期: Apr 2009
帖子: 1,363 声望值: 3
精华: 21,解答: 83
#15 旧 2011-08-29, 13:07:50 默认
namejm 当前离线  

谢楼主关心
夜猫子当习惯了
凌晨的时候只测试了部分数据
把代码完善之后
现在正在做全程测试
办公室里的网速有点慢
准备一个白天都耗在测试上了
晚上会有结果的
如果没有什么意外的话
晚上能把调试好的代码发出来
说不定还会有一个完整的教程^_^
发表新主题 关闭主题

主题工具

论坛规则  发帖规则
不可以发表主题
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子
论坛启用 vB 代码
版面启用 表情符号
版面启用 [IMG] 代码
版面禁用 HTML 代码


所有时间均为北京时间, 现在的时间是 11:55:23.

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

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