Python爬虫之路——简单的网页抓图

来源:互联网 发布:zanti网络渗透工具 编辑:程序博客网 时间:2024/05/18 00:16

用Python的urllib2库和HTMLParser库写了一个简单的抓图脚本,主要抓的是http://desk.zol.com.cn/meinv/这个链接下的图片,通过得到图集的起始URL地址,得到第一张图片,然后不断的去获取其下一个图片的URL,继而得到所有首页的图集的图片。

整个源码如下,比较简单,写这个只是简单的练手而已

[python] view plaincopy在CODE上查看代码片派生到我的代码片
  1. #coding: utf-8 #############################################################  
  2. # File Name: girls.py  
  3. # Author: mylonly  
  4. # mail: mylonly@gmail.com  
  5. # Created Time: Mon 09 Jun 2014 09:23:18 PM CST  
  6. #########################################################################  
  7. #!/usr/bin/python  
  8.   
  9. import urllib2,HTMLParser,re  
  10.   
  11. #根url  
  12. host = "http://desk.zol.com.cn"  
  13. #本地保存地址  
  14. localSavePath = '/data/girls/'  
  15. #起始图片html地址  
  16. startHtmlUrl = ''  
  17. #图片页Html的地址  
  18. htmlUrlList = []  
  19. #图片Url地址  
  20. imageUrlList = []  
  21. #根据得到的图片路径URL将图片下载下来保存本地  
  22. def downloadImage(url):  
  23.     cont = urllib2.urlopen(url).read()  
  24.     patter = '[0-9]*\.jpg';  
  25.     match = re.search(patter,url);  
  26.     if match:  
  27.         print '正在下载文件:',match.group()  
  28.         filename = localSavePath+match.group()  
  29.         f = open(filename,'w+')  
  30.         f.write(cont)  
  31.         f.close()  
  32.     else:  
  33.         print 'no match'  
  34.   
  35. #根据首页得到的图片集遍历每个图片集  
  36. def getImageUrlByHtmlUrl(htmlUrl):  
  37.     parser = MyHtmlParse(False)  
  38.     request = urllib2.Request(htmlUrl)  
  39.     try:  
  40.         response = urllib2.urlopen(request)  
  41.         content = response.read()  
  42.         parser.feed(content)  
  43.     except urllib2.URLError,e:  
  44.         print e.reason  
  45.   
  46. class MyHtmlParse(HTMLParser.HTMLParser):  
  47.     def __init__(self,isIndex):  
  48.         self.isIndex = isIndex;  
  49.         HTMLParser.HTMLParser.__init__(self)  
  50.     def handle_starttag(self,tag,attrs):  
  51.         if(self.isIndex):  
  52.             if(tag == 'a'):  
  53.                 if(len(attrs) == 4):  
  54.                     if(attrs[0] ==('class','pic')):  
  55.                         newUrl = host+attrs[1][1]  
  56.                         print '找到一处图片的网页链接:',newUrl  
  57.                         global startHtml  
  58.                         startHtmlUrl = newUrl  
  59.                         getImageUrlByHtmlUrl(newUrl)  
  60.         else:  
  61.             if(tag == 'img'):  
  62.                 if(attrs[0] == ('id','bigImg')):  
  63.                         imageUrl = attrs[1][1]  
  64.                         print '找到一张图片:',imageUrl  
  65.                         downloadImage(imageUrl)  
  66.                         #imageUrlList.append(imageUrl)    
  67.             if (tag == 'a'):  
  68.                 if (len(attrs) == 4):  
  69.                     if (attrs[1] == ('class','next')):  
  70.                         nextUrl = host + attrs[2][1]  
  71.                         print '找到一处图片的网页链接:',nextUrl  
  72.                         global startHtmlUrl  
  73.                         if (startHtmlUrl != nextUrl):  
  74.                             getImageUrlByHtmlUrl(nextUrl)  
  75. #分析首页得到每个图片集的链接  
  76. indexUrl = 'http://desk.zol.com.cn/meinv/'  
  77. m = urllib2.urlopen(indexUrl).read()  
  78. parserIndex = MyHtmlParse(True)  
  79. parserIndex.feed(m  
0 0