2010-05-07 34 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()