使用终端下载所有Ctrl Alt Del网络漫画
我尝试使用以下命令来下载ctrl alt del的漫画。
$ 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 个回答
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()
2
正如msw提到的,爬取一个网站可能是违法的、不道德的,或者让网站作者感到烦恼,但也可能是完全没问题的。请负责任地使用你的脚本能力,做一些有益的事情。请求许可当然是个不错的选择。
注意,ctrlaltdel-online.com这个网站的服务器似乎对使用普通wget用户代理字符串的请求返回了HTTP 403禁止访问的错误。模仿Firefox的请求方式似乎可以绕过这个限制(不过我猜他们只是明确拒绝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选项让它安静点。