精品技术论坛

精品技术论坛 (https://bbs.et8.net/bbs/index.php)
-   『软件使用』 (https://bbs.et8.net/bbs/forumdisplay.php?f=17)
-   -   【求助】怎样批量下载这个论坛的图片? (https://bbs.et8.net/bbs/showthread.php?t=1020978)

ping 2011-08-27 20:12:22

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

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

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

感激不尽!

namejm 2011-08-28 00:50:19

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

ping 2011-08-28 01:09:38

只要图片就好,范围就是子论坛下所有帖子内的图片。
比如这张图片
_http://clubfiles.libaclub.com/2011/08/16/21/33033659.jpg
我想保存的时候放在201108的文件夹,或者至少可以得到按照日期排序的图片url,这样我就知道哪些是新照片了。

namejm 2011-08-28 01:18:06

粗粗查看了一下
帖子里发的jpg文件路径居然是经过转换后才显示出来的
在网页源文件中根本没法直接获取
看不懂JS
第一回合就败下阵来鸟
——只要把这个转换规则搞懂了,其他的问题倒是很好办

ping 2011-08-28 01:18:59

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

代码:

@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 2011-08-28 02:11:22

1 个附件
用批处理来抓网页数据
一般需要用到curl或wget
首先要把html文件下载到本机
然后从html文件中分析各种链接
再顺藤摸瓜
现在这个论坛的防止批量抓取图片真实url的措施做得非常到位
从html源文件中没法抓到附件中图片的真实下载地址
而是把网页中的相关数据通过js来转换,再在浏览器中显示出来
看不懂那些js都是什么意思
或许真实的url首先在网站数据库中经过了一番映射之后
再通过js来查询也说不定
我整理了一份“图片真实url与网页源文件中相关代码的对应关系”的列表
并附上相关的js源文件
希望有懂的人来分析一下真实url该如何从网页源文件中获取

ping 2011-08-28 10:20:37

看似规律的图片地址原来也内藏机关啊!主题通过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 2011-08-28 10:36:30

又单独下了一个主题的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 2011-08-28 12:46:51

如果有个对应的链接表基本上无解了- -

不死鸟 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的。
位异或这个操作符批处理里面也是有的,所以这个转换并不是很大的问题,不过我不太熟批处理的东西,所以对于处理其他的东西就比较郁闷了,看看有没有其他的批处理高手进来帮你改一下吧。

ping 2011-08-28 23:56:23

感谢不死鸟解毒,看来复活有望?!召唤namejm发功,板凳翘首~~

namejm 2011-08-29 02:19:14

10楼不死鸟从原理上揭示了转码规律
给了我不少提示
摸索了一下
终于找到了一个更加简洁的方法
经过测试已经成功
代码将在今天晚些时候出炉
现在想问下楼主
你所说的按照日期归类
是按照"年月日"一个文件夹呢
还是按照"年\月\日"这样建立三级文件夹?
或者还是其他方式?
请给个明确的说法

不死鸟 2011-08-29 04:27:56

LZ前面说用“年月”做目录,红字部分后半段位置弄错了,改了一下。

ping 2011-08-29 09:06:51

引用:

作者: namejm (文章 10862941)
10楼不死鸟从原理上揭示了转码规律
给了我不少提示
摸索了一下
终于找到了一个更加简洁的方法
经过测试已经成功
代码将在今天晚些时候出炉
现在想问下楼主
你所说的按照日期归类
是按照"年月日"一个文件夹呢
还是按照"年\月\日"这样建立三级文件夹?
或者还是其他方式?
请给个明确......

按年月日建立文件夹即可。
如这张照片:
_http://clubfiles.libaclub.com/2011/08/16/21/33033659.jpg
……

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

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

namejm 2011-08-29 13:07:50

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


所有时间均为北京时间, 现在的时间是 02:41:16.

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

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