转载自我自己的博客:http://www.mylonly.com/archives/1401.html
用Python的urllib2库和HTMLParser库写了一个简单的抓图脚本,主要抓的是http://desk.zol.com.cn/meinv/这个链接下的图片,通过得到图集的起始URL地址,得到第一张图片,然后不断的去获取其下一个图片的URL,继而得到所有首页的图集的图片。
整个源码如下,比较简单,写这个只是简单的练手而已
#coding: utf-8 ############################################################# # File Name: girls.py # Author: mylonly # mail: mylonly@gmail.com # Created Time: Mon 09 Jun 2014 09:23:18 PM CST ######################################################################### #!/usr/bin/python import urllib2,HTMLParser,re #根url host = "http://desk.zol.com.cn" #本地保存地址 localSavePath = '/data/girls/' #起始图片html地址 startHtmlUrl = '' #图片页Html的地址 htmlUrlList = [] #图片Url地址 imageUrlList = [] #根据得到的图片路径URL将图片下载下来保存本地 def downloadImage(url): cont = urllib2.urlopen(url).read() patter = '[0-9]*\.jpg'; match = re.search(patter,url); if match: print '正在下载文件:',match.group() filename = localSavePath+match.group() f = open(filename,'w+') f.write(cont) f.close() else: print 'no match' #根据首页得到的图片集遍历每个图片集 def getImageUrlByHtmlUrl(htmlUrl): parser = MyHtmlParse(False) request = urllib2.Request(htmlUrl) try: response = urllib2.urlopen(request) content = response.read() parser.feed(content) except urllib2.URLError,e: print e.reason class MyHtmlParse(HTMLParser.HTMLParser): def __init__(self,isIndex): self.isIndex = isIndex; HTMLParser.HTMLParser.__init__(self) def handle_starttag(self,tag,attrs): if(self.isIndex): if(tag == 'a'): if(len(attrs) == 4): if(attrs[0] ==('class','pic')): newUrl = host+attrs[1][1] print '找到一处图片的网页链接:',newUrl global startHtml startHtmlUrl = newUrl getImageUrlByHtmlUrl(newUrl) else: if(tag == 'img'): if(attrs[0] == ('id','bigImg')): imageUrl = attrs[1][1] print '找到一张图片:',imageUrl downloadImage(imageUrl) #imageUrlList.append(imageUrl) if (tag == 'a'): if (len(attrs) == 4): if (attrs[1] == ('class','next')): nextUrl = host + attrs[2][1] print '找到一处图片的网页链接:',nextUrl global startHtmlUrl if (startHtmlUrl != nextUrl): getImageUrlByHtmlUrl(nextUrl) #分析首页得到每个图片集的链接 indexUrl = 'http://desk.zol.com.cn/meinv/' m = urllib2.urlopen(indexUrl).read() parserIndex = MyHtmlParse(True) parserIndex.feed(m