本文實(shí)例講述了Python爬蟲(chóng)實(shí)現(xiàn)獲取動(dòng)態(tài)gif格式搞笑圖片的方法。分享給大家供大家參考,具體如下:
峨山縣ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書(shū)銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書(shū)合作)期待與您的合作!有時(shí)候看到一些喜歡的動(dòng)圖,如果一個(gè)個(gè)取保存挺麻煩,有的網(wǎng)站還不支持右鍵保存,因此使用python來(lái)獲取動(dòng)態(tài)圖,就看看就很有意思了
本次爬取的網(wǎng)站是 居然搞笑網(wǎng) http://www.zbjuran.com/dongtai/list_4_1.html
思路:
獲取當(dāng)前頁(yè)面內(nèi)容
查找頁(yè)面中動(dòng)圖所代表的url地址
保存這個(gè)地址內(nèi)容到本地
如果想爬取多頁(yè),就可以加上一個(gè)循環(huán)條件
代碼:
#!/usr/bin/python #coding:utf-8 import urllib2,time,uuid,urllib,os,sys,re from bs4 import BeautifulSoup reload(sys) sys.setdefaultencoding('utf-8') #獲取頁(yè)面內(nèi)容 def getHtml(url): try: print url html = urllib2.urlopen(url).read()#.decode('utf-8')#解碼為utf-8 except: return return html #獲取動(dòng)圖所代表的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={} #通過(guò)if語(yǔ)句,過(guò)濾廣告項(xiàng) 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 "動(dòng)圖存貯位置:"+target download_img = urllib.urlretrieve(imgurl, target)#將圖片下載到指定路徑中 print "圖片出處為:"+imgurl return download_img #退出函數(shù) 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'],'搞笑動(dòng)圖',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\ 請(qǐng)輸入要爬取的頁(yè)面,范圍為(1-100),如果退出,請(qǐng)輸入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) #第一次爬取結(jié)束 pageNo = raw_input("Input the page number you want to scratch (1-50),please input 'quit' if you want to quit\n\ 請(qǐng)輸入總共需要爬取的頁(yè)面,范圍為(1-5000),如果退出,請(qǐng)輸入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 >") #循環(huán)遍歷,爬取多頁(yè) for num in xrange(int(pageNo)): start(str(num+1))
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。