2010-05-07 59 views
1

我试过使用下面的命令来下载ctrl alt del漫画。使用终端下载所有ctrl alt del webcomics

$ for filename in $(seq 20021023 20100503); do wget http://www.ctrlaltdel-online.com/comics/"$filename".jpg; done 

我碰到下面的错误代码,bash: syntax error near unexpected token 'do'

我使用卷曲,使用此命令也试过,

curl http://ctrlaltdel-online.com/comics[20021023..20100503].jpg 

我碰到下面的错误代码,curl: (3) [globbing] error: bad range specification after pos 37

怎么了,我该如何解决?

+1

你将最终抓住这样的404页面*很多*。 – Amber 2010-05-07 02:05:15

+0

FWIW,我能够运行你的脚本。虽然'seq'以指数形式显示数字。我建议使用datetime编写一个快速的python脚本来生成你的数字,然后用wget(或使用python的url getter)遍历它。 – Stephen 2010-05-07 03:05:32

+1

我猜Tim Buckley不会为这样的努力而感到高兴,事实上,他可能更愿意向你推销一本书,他与版权持有者之间的关系如何。 – msw 2010-05-07 04:58:08

回答

2

正如msw所指出的那样,抓取网站可能是非法的,不道德的,对作者不利的,或者完全没有问题。请以负责任的方式使用您的脚本权限,并为Good(tm)。询问权限当然是一件好事。

请注意,ctrlaltdel-online.com网络服务器似乎返回HTTP 403禁止wget与正常的wget User-Agent字符串。仿效Firefox-ish似乎绕过了这一点(尽管我敢打赌他们只是明确否认wget,这表明他们很可能禁止这种类型的访问)。

USERAGENT='Mozilla/5.0 Firefox/3.6.3' 
for DAYS in $(seq 365) 
do 
    NEXT=`date -d "${DAYS} days ago" +%Y%m%d` 
    wget -U "${USERAGENT}" "http://www.cad-comic.com/comics/cad/${NEXT}.jpg" 
done 

用一个更大的数字替换365回去超过一年。 wget输出可能很烦人,所以你可以通过它来让它安静。

0

我正在写相同的脚本。这里是。

import sys 
import re 
import urllib 
import os 
import ctypes 
from urllib import FancyURLopener 

class MyOpener(FancyURLopener): 
    version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it;rv:1.8.1.11)Gecko/20071127 Firefox/2.0.0.11' 


def getlinks(add,m,opener): 
    ufile=opener.open(add) 
    html=ufile.read() 
    dates=re.findall('href="/cad/(\d+)">',html) 
    links=[] 
    for date in dates: 
      if date[4:6]==m: 
      links.append('http://www.cad-comic.com/cad/'+date) 
    links.reverse() 
    print 'Total {} comics found.'.format(len(links)) 
    #print len(links) 
    return links 

def getstriplink(link,opener): 
    ufile=opener.open(link) 
    html=ufile.read() 
    url=re.search('img src="(.+)" alt="(.+)" title=',html) 
    date=link[-8:] 
    return(url.group(1),url.group(2),date) 



def main(): 
    y=raw_input('Enter year 2002 - current(yyyy) ') 
    m=raw_input('Enter month(only months 12,11 and 10 for 2002)(mm) ') 
    add='http://www.cad-comic.com/cad/archive/'+y 
    opener=MyOpener() 
    links=getlinks(add,m,opener) 
    f=open('/media/aux1/pythonary/cad'+str(y)+str(m)+'.html','w') 
    print 'downloading' 
    for link in links: 
     url=getstriplink(link,opener) 
     #date=url[0][-8:] 
     date=url[2] 
     opener.retrieve(url[0],'/media/aux1/pythonary/getcad_files/strip'+date) 
     sys.stdout.flush() 
     print'.', 
     f.write('<h2>'+url[1]+' '+date+'</h2>'+'<p><img src="getcad_files/strip'+date+'"/></p>') 

    f.close() 




if __name__ == '__main__': 
    main()