用python实现的一个抓取图片的爬虫

              最近学到python的时候学到正则表达式,于是心血来潮就用python写了一个简单抓取网站图片的小爬虫,为此贴上代码来记录自己学习python的过程,同时也希望大家多提出爬虫改进的意见,因为此爬虫只能抓取以http://开头的图片,而像百度图库的图片大多数都不是以http://开头,希望大家能给出意见。

             废话不多说,代码上:

            version:1.0

            

#!/usr/bin/python

import re
import urllib


def getHtml():
	url=raw_input('Enter url:')
	page=urllib.urlopen(url)
        html=page.read()
	return html

def getImgUrl(html):
	print '''
	         1 represents .jpg
	         2 represents .png
		 4 represents .gif
                 3 represents .jpg+.png
		 5 represents .jpg+.gif
		 6 represents .png+.gif
		 7 represents .jpg+.png+.gif
		 '''
        imgForm=int(raw_input('Enter the Form of Img:'))
	imgurllist=[]
	if imgForm==1:
		reg=r'http://[^\s]+?\.jpg'
		imgre=re.compile(reg,re.I)
		imgurllist=re.findall(imgre,html)
	elif imgForm==2:
                reg=r'http://[^\s]+?\.png'
		imgre=re.compile(reg,re.I)
		imgurllist=re.findall(imgre,html)
	elif imgForm==4:
		reg=r'http://[^\s]+?\.gif'
		imgre=re.compile(reg,re.I)
		imgurllist=re.findall(imgre,html)
	elif imgForm==3:
	        reg=r'(http://[^\s]+?\.(png|jpg))'
		imgre=re.compile(reg,re.I)
		imglist=re.findall(imgre,html)
		imgurllist=[]
                for x in imglist:
			imgurllist.append(x[0])
	elif imgForm==5:
		reg=r'(http://[^\s]+?\.(gif|jpg))'
		imgre=re.compile(reg,re.I)
		imglist=re.findall(imgre,html)
		imgurllist=[]
                for x in imglist:
			imgurllist.append(x[0])
        elif imgForm==6:
		reg=r'(http://[^\s]+?\.(png|gif))'
		imgre=re.compile(reg,re.I)
		imglist=re.findall(imgre,html)
		imgurllist=[]
                for x in imglist:
			imgurllist.append(x[0])
	else:
                reg=r'(http://.+?\.(png|jpg|jpg))'
		imgre=re.compile(reg,re.I)
		imglist=re.findall(imgre,html)
		imgurllist=[]
                for x in imglist:
			imgurllist.append(x[0])
         
	return imgurllist

def downloadImg(url):
	jpg=0;
	png=0;
	gif=0;
	for imgurl in url:
		if(re.findall(r'.+\.jpg',imgurl)):
			urllib.urlretrieve(imgurl,"%s.jpg"%jpg)
			jpg+=1
		elif(re.findall(r'.+\.png',imgurl)):
			urllib.urlretrieve(imgurl,"%s.png"%png)
			png+=1
		elif(re.findall(r'.+?\.gif',imgurl)):
			urllib.urlretrieve(imgurl,"%s.gif"%gif)
			gif+=1
		else:
			print "not picture captured"
	
html=getHtml()
imgurl=getImgUrl(html)
downloadImg(imgurl)
print imgurl

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值