Python 使用终端下载所有ctrl-alt-del网络喜剧

Python 使用终端下载所有ctrl-alt-del网络喜剧,python,download,web-scraping,Python,Download,Web Scraping,我尝试使用以下命令下载ctrl-alt-del漫画 $ for filename in $(seq 20021023 20100503); do wget http://www.ctrlaltdel-online.com/comics/"$filename".jpg; done 我得到以下错误代码,bash:意外标记“do”附近的语法错误 我也尝试过使用cURL,使用这个命令 curl http://ctrlaltdel-online.com/comics[20021023..20100503

我尝试使用以下命令下载ctrl-alt-del漫画

$ for filename in $(seq 20021023 20100503); do wget http://www.ctrlaltdel-online.com/comics/"$filename".jpg; done
我得到以下错误代码,
bash:意外标记“do”附近的语法错误

我也尝试过使用cURL,使用这个命令

curl http://ctrlaltdel-online.com/comics[20021023..20100503].jpg
我得到以下错误代码,
curl:(3)[globbing]错误:37号位置后的范围规格不正确


出了什么问题,我该如何修复它?

正如msw所指出的,在网站上爬行可能是非法的、不道德的、激怒作者的,也可能是完全没有问题的。请负责任地使用您的脚本能力,并且永远(tm)。请求许可肯定是一件好事

请注意,ctrlaltdel-online.com web服务器似乎使用正常的wget用户代理字符串向wget返回HTTP 403禁止。模仿Firefox-ish似乎绕过了这一点(尽管我打赌他们只是明确拒绝wget,这表明他们很可能禁止这种访问)


将365替换为更大的数字,可以追溯到一年多以前。wget输出可能很烦人,因此您可以传递它-q使其安静。

我正在编写相同的脚本。给你

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()
导入系统 进口稀土 导入URL库 导入操作系统 导入ctypes 从urllib导入FancyURLopener 类开孔器(开孔器): 版本='Mozilla/5.0(Windows;U;Windows NT 5.1;it;rv:1.8.1.11)Gecko/20071127 Firefox/2.0.0.11' def获取链接(添加、m、打开器): ufile=opener.open(添加) html=ufile.read() dates=re.findall('href=“/cad/(\d+)”>,html) 链接=[] 对于日期中的日期: 如果日期[4:6]==m: links.append('http://www.cad-comic.com/cad/"日期) links.reverse() 打印“总共找到{}本漫画”。格式(len(链接)) #打印透镜(链接) 返回链接 def getstriplink(链接,开启器): ufile=opener.open(链接) html=ufile.read() url=re.search('img src=“(.+)”alt=“(.+)”title=”,html) 日期=链接[-8:] 返回(url.group(1)、url.group(2)、日期) def main(): y=原始输入(“输入2002年-当前年份(yyyy)” m=原始输入(“输入月份(2002年仅为12、11和10个月)(mm)” 加上http://www.cad-comic.com/cad/archive/“+y 开瓶器=MyOpener() links=getlinks(add、m、opener) f=open('/media/aux1/pythonaly/cad'+str(y)+str(m)+'.html',w') 打印“下载” 对于链接中的链接: url=getstriplink(链接,打开器) #日期=url[0][8:] 日期=网址[2] 检索(url[0],'/media/aux1/pythonary/getcad_files/strip'+date) sys.stdout.flush() 打印“.”, f、 写入(''+url[1]+''+date+'+'

')) f、 关闭() 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': main()
你最终会抓到大量类似的404页。FWIW,我可以运行你的脚本。虽然
seq
以指数形式显示数字。我建议用datetime编写一个快速的python脚本来生成你的数字,然后用wget(或者使用python的url getter)循环。我猜Tim Buckley不会对这样的努力感到满意,事实上,他可能更愿意卖给你一本书,因为他是版权所有者等等。
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()