Скачивание всего ctrl alt del webcomics с помощью терминала - PullRequest
1 голос
/ 07 мая 2010

Я пытался использовать следующие команды для загрузки Ctrl Alt Del Comics.

$ 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, используя эту команду,

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

Я получаю следующий код ошибки: curl: (3) [globbing] error: bad range specification after pos 37

Что не так, и как я могу это исправить?

Ответы [ 2 ]

2 голосов
/ 08 мая 2010

Как указала msw, сканирование сайта может быть либо незаконным, неэтичным, раздражающим для автора, либо совершенно нормальным. Пожалуйста, используйте ваши полномочия сценариев ответственно и хорошо (тм). Запрашивать разрешение было бы неплохо.

Обратите внимание, что веб-сервер 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 может быть раздражающим, поэтому вы можете передать его -q, чтобы он замолчал.

0 голосов
/ 13 марта 2012

я писал тот же сценарий. Вот оно.

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...