Python 批量下载xkcd漫画

#coding=utf-8
import urllib
import re

#start page number
start = 1
#end page number
end = 1613

prevUrl = 'http://xkcd.com/'

#download html file
def getHtml(url):
    page = urllib.urlopen(url)
    html = page.read()
    return html

#parse comic image url from html
def getImgUrl(html):
	reg = r'src="(.+?\.png)" title='
   	imgre = re.compile(reg)
   	imglist = re.findall(imgre,html)
   	if(len(imglist) > 0):
   		return imglist

   	reg = r'src="(.+?\.jpg)" title='
   	imgre = re.compile(reg)
   	imglist = re.findall(imgre,html)
   	
   	return imglist    


#down load comic image and save it to file with name
def getImg(url,name):
	conn = urllib.urlopen(url)
	f = open(name,'wb')
	f.write(conn.read())
	f.close()
	

#test function
def loopPrintUrl(imglist):
	for imgurl in imglist:
		url = 'http:' + imgurl
		print (url)


#append image download url
def getImgFileNameFromUrl(url):
	strlist = url.split('/')
	return strlist[4]
	


# download xkcd comic image
def loopDownLoadXKCDImg():
	for i in range(start,end + 1):
		downloadUrl = prevUrl + str(i) + '/'
		#print(downloadUrl)
		html = getHtml(downloadUrl)
		#print(html)
		urlList = getImgUrl(html)
		for tmpurl in urlList:
			filename = str(i)+ "_" + getImgFileNameFromUrl(tmpurl)
			imgDownLoadurl = "http:" + tmpurl
			getImg(imgDownLoadurl,filename)
			print (str(i) + "    " + imgDownLoadurl + " -> down")


loopDownLoadXKCDImg()


start 是起始漫画索引

end是结束漫画的索引(此脚本写完的时候xkcd最新的是1613张)

以上代码在 Python2.7测试通过

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值