十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本文实例讲述了Python爬虫实现获取动态gif格式搞笑图片的方法。分享给大家供大家参考,具体如下:
峨山县ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!有时候看到一些喜欢的动图,如果一个个取保存挺麻烦,有的网站还不支持右键保存,因此使用python来获取动态图,就看看就很有意思了
本次爬取的网站是 居然搞笑网 http://www.zbjuran.com/dongtai/list_4_1.html
思路:
获取当前页面内容
查找页面中动图所代表的url地址
保存这个地址内容到本地
如果想爬取多页,就可以加上一个循环条件
代码:
#!/usr/bin/python #coding:utf-8 import urllib2,time,uuid,urllib,os,sys,re from bs4 import BeautifulSoup reload(sys) sys.setdefaultencoding('utf-8') #获取页面内容 def getHtml(url): try: print url html = urllib2.urlopen(url).read()#.decode('utf-8')#解码为utf-8 except: return return html #获取动图所代表的url列表 def getImagUrl(html): if not html: print 'nothing can be found' return ImagUrlList=[] soup=BeautifulSoup(html,'lxml') #获取item列表 items=soup.find("div",{"class":"main"}).find_all('div',{'class':'item'}) for item in items: target={} #通过if语句,过滤广告项 if item.find('div',{"class":"text"}): #获取url imgurl=item.find('div',{"class":"text"}).find('img').get('src') target['url']=imgurl #获取名字 target['name']=item.find('h4').text ImagUrlList.append(target) return ImagUrlList #下载图片到本地 def download(author,imgurl,typename,pageNo): #定义文件夹的名字 x = time.localtime(time.time()) foldername = str(x.__getattribute__("tm_year"))+"-"+str(x.__getattribute__("tm_mon"))+"-"+str(x.__getattribute__("tm_mday")) download_img=None picpath = 'Jimy/%s/%s/%s' % (foldername,typename,str(pageNo)) filename = author+str(uuid.uuid1()) pic_type=imgurl[-3:] if not os.path.exists(picpath): os.makedirs(picpath) target = picpath+"/%s.%s" % (filename,pic_type) print "动图存贮位置:"+target download_img = urllib.urlretrieve(imgurl, target)#将图片下载到指定路径中 print "图片出处为:"+imgurl return download_img #退出函数 def myquit(): print "Bye Bye!" exit(0) def start(pageNo): targeturl="http://www.zbjuran.com/dongtai/list_4_%s.html" % str(pageNo) html = getHtml(targeturl) urllist=getImagUrl(html) for imgurl in urllist: download(imgurl['name'],imgurl['url'],'搞笑动图',pageNo) if __name__ == '__main__': print ''' ***************************************** ** Welcome to Spider of GIF ** ** Created on 2017-3-16 ** ** @author: Jimy ** *****************************************''' pageNo = raw_input("Input the page number you want to scratch (1-50),please input 'quit' if you want to quit\n\ 请输入要爬取的页面,范围为(1-100),如果退出,请输入Q>\n>") while not pageNo.isdigit() or int(pageNo) > 50 or int(pageNo) < 1: if pageNo == 'Q': myquit() print "Param is invalid , please try again." pageNo = raw_input("Input the page number you want to scratch >") print pageNo start(pageNo) #第一次爬取结束 pageNo = raw_input("Input the page number you want to scratch (1-50),please input 'quit' if you want to quit\n\ 请输入总共需要爬取的页面,范围为(1-5000),如果退出,请输入Q>\n>") while not pageNo.isdigit() or int(pageNo) > 5000 or int(pageNo) < 1: if pageNo == 'Q': myquit() print "Param is invalid , please try again." pageNo = raw_input("Input the page number you want to scratch >") #循环遍历,爬取多页 for num in xrange(int(pageNo)): start(str(num+1))
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。